Statement on glibc/iconv Vulnerability

A classe stdClass

(PHP 4, PHP 5, PHP 7, PHP 8)

Introdução

Uma classe vazia genérica com propriedades dinâmicas.

Objetos desta classe podem ser instaciados com o operador new ou criados por conversores de tipo para o objeto. Muitas funções do PHP também criam instâncias desta classe, ex.: json_decode(), mysqli_fetch_object() ou PDOStatement::fetchObject().

Apesar de não implementar os métodos mágicos __get()/__set(), esta classe permite propriedades dinâmicas e não requer o atributo #[\AllowDynamicProperties].

Esta não é uma classe base já que o PHP não possui um conceito de uma classe base universal. Entretanto, é possível criar uma classe customizada que se estende a partir de stdClass e como resultado herda a funcionalidade de propriedades dinâmicas.

Resumo da classe

class stdClass {
}

Esta classe não tem métodos ou propriedades padrão.

Exemplos

Exemplo #1 Criado como resultado de uma conversão de tipo em um objeto

<?php
$obj
= (object) array('foo' => 'bar');
var_dump($obj);

O exemplo acima produzirá:

object(stdClass)#1 (1) {
  ["foo"]=>
  string(3) "bar"
}

Exemplo #2 Criado como resultado da função json_decode()

<?php
$json
= '{"foo":"bar"}';
var_dump(json_decode($json));

O exemplo acima produzirá:

object(stdClass)#1 (1) {
  ["foo"]=>
  string(3) "bar"
}

Exemplo #3 Declarando propriedades dinâmicas

<?php
$obj
= new stdClass();
$obj->foo = 42;
$obj->{1} = 42;
var_dump($obj);

O exemplo acima produzirá:

object(stdClass)#1 (2) {
  ["foo"]=>
  int(42)
  ["1"]=>
  int(42)
}
add a note

User Contributed Notes 1 note

up
7
Mats M
1 year ago
In PHP8 this has been changed

https://www.php.net/manual/en/migration80.incompatible.php

A number of warnings have been converted into Error exceptions:

Attempting to write to a property of a non-object. Previously this implicitly created an stdClass object for null, false and empty strings.

So if you add properties to a $var, you first need to make it a stdClass()

$var = new stdClass();
$var->propp1 = "nice";
$var->propp2 = 1234;
To Top