在 PHP 中可以使用可变变量...
例如...
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 中变量命名的规则是什么?
From 手册 http://www.php.net/manual/en/language.variables.basics.php:
变量名称遵循与 PHP 中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它可以表示为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
因此,如果您通过正则表达式运行字符串,您应该能够判断它是否有效。
应该注意的是,使用变量访问“无效”对象属性名称的能力是某些 XML 解析的正确方法。
例如,从SimpleXML
docs:
访问 XML 文档中包含 PHP 命名约定不允许的字符(例如连字符)的元素可以通过将元素名称封装在大括号和撇号内来完成。
接下来是这个代码示例:
echo $xml->movie->{'great-lines'}->line;
所以也不一定wrong拥有只能通过这种方式访问的属性。
但是,如果您的代码既创建又使用该对象 - 人们会想知道为什么要使用这些类型的属性。当然,允许类似的情况SimpleXML
例如,创建一个对象来表示您控制范围之外的事物。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)