Как получить доступ к атрибуту объекта, который начинается с числа?

Я работаю над существующей базой кода и возвратил объект с атрибутом, который начинается с числа, которое я могу увидеть, если я вызываю print_r на объект.

Скажем, это $Beeblebrox->2ndhead. Когда я пытаюсь получить к нему доступ, я получаю сообщение об ошибке:

Ошибка анализа: синтаксическая ошибка, неожиданный T_LNUMBER, ожидающий T_STRING или T_VARIABLE или '{' или '$'

Как я могу получить этот атрибут?

Ответы

Ответ 1

Как насчет этого:

$Beeblebrox->{'2ndhead'}


Фактически, вы можете сделать это практически для любой переменной - даже для тех, которые не являются свойствами класса.

Например, вы могли бы подумать о имени переменной, которое содержит пробелы; следующий синтаксис будет работать:

${"My test var"} = 10;
echo ${"My test var"};

Даже если, очевидно, вы не сможете сделать ничего подобного:

$My test var = 10;
echo $My test var;


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

Единственное, что я могу найти о {}, и здесь переменные: Variable parsing - но не совсем относится к текущему предмету...


Но здесь статья, которая показывает пару других возможностей, и идет дальше, чем примеры, которые я разместил здесь: Имена переменных переменных: Curly Brace Madness

И вот еще один, который дает некоторую дополнительную информацию о том, как они анализируются: Примечания к грамматике PHP p >

Ответ 2

Я действительно узнал ответ от коллеги, прежде чем я спросил об этом, но не смог найти его в Google, поэтому я хотел опубликовать его здесь, если другие проблемы будут иметь такую ​​же проблему.

Я могу получить доступ к этому атрибуту следующим образом:

$Beeblebrox->{'2ndhead'}

Не имеет никакого права иметь атрибут или переменную, начинающуюся с числа, но так или иначе такая динамическая ссылка, как это делает возможным. Кажется, это странная лазейка для меня.