PHP 8.6.0 Beta 1 is available for testing

Класс stdClass

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

Введение

Пустой класс общего назначения с динамическими свойствами.

Объекты стандартного класса создают оператором new или путём приведения к объекту значения другого типа. Ряд PHP-функций тоже создаёт экземпляры этого класса, например, json_decode() , mysqli_fetch_object() или PDOStatement::fetchObject() .

Класс поддерживает динамические свойства и не требует атрибута #[\AllowDynamicProperties], хотя не реализует магических методов __get() и __set().

Это не базовый класс, поскольку PHP не включает понятия универсального базового класса. При этом возможно создать пользовательский класс, который расширит класс stdClass и поэтому унаследует поддержку динамических свойств.

Обзор класса

#[\AllowDynamicProperties]
class stdClass {
}

Класс не содержит методов или свойств по умолчанию.

Примеры

Пример #1 Приведение к объекту значения другого типа

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

Результат выполнения приведённого примера:

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

Пример #2 Возврат объекта функцией json_decode()

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

Результат выполнения приведённого примера:

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

Пример #3 Объявление динамических свойств

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

Результат выполнения приведённого примера:

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

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
24
Mats M
3 years 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;
+Добавить

AltStyle によって変換されたページ (->オリジナル) /