С инструкция :
Имена переменных следуют тем же правилам, что и другие метки в PHP. Допустимое имя переменной начинается с буквы или подчеркивания, за которым следует любое количество букв, цифр или подчеркивания. Как регулярное выражение, оно будет выражаться так: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Так что, если вы пропустили вашу строку через RegEx, вы сможете определить, является ли она действительной или нет.
Следует отметить, что возможность доступа к «недопустимым» именам свойств объекта с использованием переменной-переменной является правильным подходом для некоторого анализа XML.
Например, из SimpleXML
документов:
Доступ к элементам в документе XML, которые содержат символы, не разрешенные в соответствии с соглашением об именах в PHP (например, дефис), может быть выполнен путем инкапсуляции имени элемента в фигурные скобки и апостроф.
За этим примером кода:
echo $xml->movie->{'great-lines'}->line;
Так что не обязательно неправильно иметь свойства, к которым можно получить доступ только таким способом.
Однако, если ваш код создает и использует объект - можно задаться вопросом, почему вы используете такие свойства. Разумеется, допускается ситуация, аналогичная примеру SimpleXML
, где создается объект, представляющий что-то, выходящее за рамки вашего элемента управления.