例如…
class obj { } $fieldName = "Surname"; $object = new obj(); $object->Name = "John"; $object->$fieldName = "Doe"; echo "{$object->Name} {$object->Surname}"; // This echoes "John Doe".
但是,$fieldName字符串可能包含变量名称中不允许的某些字符. PHP仍然会创建具有该名称的字段(很像关联数组),但我无法使用$object-> ……来访问它,因为它无法正确解析.
现在,是否有任何函数可以检查该字符串是否可以用作有效的PHP变量名.如果没有,如何使用正则表达式创建? PHP中的变量名称有哪些规则?
Variable names follow the same rules as other labels in PHP. A valid variable name starts with a letter or underscore,followed by any number of letters,numbers,or underscores. As a regular expression,it would be expressed thus:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
因此,如果您通过RegEx运行字符串,您应该能够判断它是否有效.
应该注意,使用变量变量访问“无效”Object属性名称的能力是某些XML解析的正确方法.
例如,从SimpleXML文档:
Accessing elements within an XML document that contain characters not permitted under PHP’s naming convention (e.g. the hyphen) can be accomplished by encapsulating the element name within braces and the apostrophe.
接下来是这个代码示例:
echo $xml->movie->{'great-lines'}->line;
因此,拥有只能以这种方式访问的属性并不一定是错的.
但是,如果您的代码都创建并使用了对象 – 那么您会想知道为什么要使用这些属性.当然,允许类似于SimpleXML示例的情况,其中创建对象以表示控件范围之外的内容.