我的命名空间名称必须遵循哪些规则?
答案 0 :(得分:8)
变量名称遵循与PHP中其他标签相同的规则。一个有效的 变量名以字母或下划线开头,后跟任意名称 字母,数字或下划线的数量。作为正则表达式, 这样表达:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
“其他标签”在这里确实引用名称空间以及类和函数名称等。
请注意,PHP对编码没有本地的理解,并将此类标签视为字节数组;大多数Unicode字符串(读取:UTF-8)将满足上述天真的正则表达式:
// yup, works
namespace 漢字;
class 文字 {}
答案 1 :(得分:1)
对于那些在此问题上绊脚石的人:以下正则表达式将验证完整的PHP名称空间(不允许前面或后面的反斜杠)。
^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff\\]*[a-zA-Z0-9_\x7f-\xff]$
使用PHP的preg_match
时,正则表达式应像这样使用:
preg_match(
'/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff\\\\]*[a-zA-Z0-9_\x7f-\xff]$/',
'Vendor\Package\Valid'
);