Я изучал механизм приведения PHP и столкнулся со странным случаем при приведении массива в объект
Код: Выделить всё
$o = (object) array('1'=>'/foo/bar');
$o = new stdClass();
var_dump($o);
Насколько я понимаю, свойства PHP необходимо объявлять по тем же правилам, что и переменные PHP. То есть допустимое имя переменной начинается с буквы или подчеркивания, за которыми следует любое количество букв, цифр или подчеркиваний. Однако приведенный выше код выдает следующий результат
Код: Выделить всё
object(stdClass)#1 (1) {
[1]=>
string(8) "/foo/bar"
}
Что действительно странно, так это когда вы пытаетесь получить доступ к этой информации в объекте.
Код: Выделить всё
var_dump($o->1); // parse error
var_dump($o->{'1'}); // NULL
var_dump(get_object_vars($o)); //array(0) { }
Есть ли какой-либо способ получить информацию, которую сообщает var_dump, находится в объекте, или она просто заблокирована на оставшуюся часть жизненного цикла запроса? (практическая польза от этого равна нулю, мне просто интересно)
Подробнее здесь:
https://stackoverflow.com/questions/186 ... -an-object