Я работаю над существующей базой кода и возвратил объект с атрибутом, который начинается с числа, которое я могу увидеть, если я вызову print_r
на объекте.
Скажем, это $Beeblebrox->2ndhead
. Когда я пытаюсь получить к нему доступ, я получаю сообщение об ошибке:
Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
Как я могу получить этот атрибут?
Как насчет этого :
$Beeblebrox->{'2ndhead'}
Фактически, вы можете сделать это практически для любой переменной – даже для тех, которые не являются свойствами класса.
Например, вы могли бы подумать о имени переменной, которое содержит пробелы; следующий синтаксис будет работать:
${"My test var"} = 10; echo ${"My test var"};
Даже если, очевидно, вы не сможете сделать ничего подобного:
$My test var = 10; echo $My test var;
Не знаю, как это работает внутри, хотя … И после небольшого поиска я ничего не могу найти об этом в руководстве по PHP.
Единственное, что я могу найти о {}
и переменных, здесь: Variable parsing – но не совсем связанный с текущим субъектом …
Но вот статья, которая показывает пару других возможностей, и идет дальше, чем примеры, которые я написал здесь: PHP Variable Names: Curly Brace Madness
И вот еще один, который дает некоторую дополнительную информацию о том, как они анализируются: грамматические заметки PHP
Я действительно узнал ответ от коллеги, прежде чем я спросил об этом, но не смог найти его в Google, поэтому я хотел бы опубликовать его здесь, если у других проблема такая же.
Я могу получить доступ к этому атрибуту следующим образом:
$Beeblebrox->{'2ndhead'}
На самом деле не имеет законного наличия атрибута или переменной, которая начинается с числа, но так или иначе такая динамическая ссылка, как это делает возможным. Кажется, это странная лазейка для меня.