PHP保留字作为命名空间和类名

Spe*_*ark 4 php namespaces reserved-words

最近我开始转换我的框架以使用php命名空间和一个我似乎无法找到答案的问题 - 使用保留字,例如'Object','Array','String'是'合法的' '作为该命名空间中的命名空间和类名?一个例子是:

namespace System\Object;


class String { }

class Array { }
Run Code Online (Sandbox Code Playgroud)

Stu*_*Stu 9

PHP将抛出一个错误:

Parse error: syntax error, unexpected T_ARRAY, expecting T_STRING
Run Code Online (Sandbox Code Playgroud)

如果你试试:

class Array
{

}
$myClass = new Array;
Run Code Online (Sandbox Code Playgroud)

相反,尝试类似的东西

class myArray
{

}
$myClass = new myArray;
Run Code Online (Sandbox Code Playgroud)

[编辑]我会详细说明一下,它们是有原因保留的,因为在上面的第一个场景中,PHP无法区分定义数组或初始化同名的类,所以它抛出一个错误.例如,在MySQL中没有办法解决这个问题,你可以用反引号来逃避保留字.所以在PHP中你被迫改变名字,你不必改变它,只要你没有使用与保留字完全相同的名字,就会有一个字符.

希望有所帮助!