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;stdClass
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
stdClass
Референца за `class.stdclass.php` со подобрена типографија и навигација.
Класата stdClass
(PHP 4, PHP 5, PHP 7, PHP 8)
Вовед
Општа празна класа со динамични својства.
Објекти од оваа класа може да се инстанцираат со new оператор или да се креираат со претворање во објект. Неколку PHP функции исто така креираат инстанци од оваа класа, на пр. json_decode(), mysqli_fetch_object() or PDO::FETCH_OBJ (.
И покрај тоа што не имплементира
__get()/__set()
магични методи, оваа класа дозволува динамични својства и не бара
#[\AllowDynamicProperties] attribute.
Ова не е базна класа бидејќи PHP нема концепт на универзална базна класа. Сепак, можно е да се креира прилагодена класа што наследува од stdClass и како резултат ги наследува функционалностите на динамичните својства.
Синопсис на класата
Оваа класа нема методи или стандардни својства.
Примери
Пример #1 Создадено како резултат на претворање во објект
<?php
$obj = (object) array('foo' => 'bar');
var_dump($obj);Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
object(stdClass)#1 (1) {
["foo"]=>
string(3) "bar"
}
Пример #2 Создадено како резултат на json_decode()
<?php
$json = '{"foo":"bar"}';
var_dump(json_decode($json));Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
object(stdClass)#1 (1) {
["foo"]=>
string(3) "bar"
}
Пример #3 Декларирање динамични својства
<?php
$obj = new stdClass();
$obj->foo = 42;
$obj->{1} = 42;
var_dump($obj);Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
object(stdClass)#1 (2) {
["foo"]=>
int(42)
["1"]=>
int(42)
}