Может ли кто-нибудь объяснить, почему в PHP работает следующее?
$xml = \simplexml_load_string('<root></root>');
$xml->a->b->c = 123;
(и любая глубина будет работать.)
Но при попытке проверить элемент напрямую, он, как я и ожидал, выдаст ошибку ссылки.
$xml = \simplexml_load_string('<root></root>');
var_dump($xml->a->b->c);
Поскольку $xml->a
- это SimpleXMLElement , а $x->a-b
- это ноль, и тогда вы можете 't ссылки на свойства необъектов.
Даже в первой ситуации присваивания я ожидаю, что разыменование произойдет до присвоения и завершится неудачей.Но похоже, что там что-то работает по-другому.