最近我已经开始将我的框架转换为使用php命名空间和一个我似乎无法找到答案的问题 - 是否使用保留字是“合法”的作为'对象','数组','字符串'作为命名空间内的命名空间和类名称?一个例子是:作为名称空间和类名的PHP保留字
namespace System\Object;
class String { }
class Array { }
最近我已经开始将我的框架转换为使用php命名空间和一个我似乎无法找到答案的问题 - 是否使用保留字是“合法”的作为'对象','数组','字符串'作为命名空间内的命名空间和类名称?一个例子是:作为名称空间和类名的PHP保留字
namespace System\Object;
class String { }
class Array { }
PHP会抛出这样的错误:如果您尝试
Parse error: syntax error, unexpected T_ARRAY, expecting T_STRING
:
class Array
{
}
$myClass = new Array;
相反,尝试像
class myArray
{
}
$myClass = new myArray;
[编辑]我会详细说明一点,他们是reserv因为在上面的第一个场景中,PHP无法区分定义数组或初始化相同名称的类,因此会引发错误。例如,在MySQL中没有办法绕过这种情况,例如,您可以使用反引号来避开保留字。所以在PHP中,你不得不改变名字,你不必改变它,只要你不使用完全相同的名字作为保留字,一个字符就会生效。
希望有帮助!
感谢Stu - 这就是我的想法,但无法用我的框架正确地测试它,因为目前在我转换所有内容时存在很多问题。 – 2012-08-03 08:47:48
我没有问题之前使用过类对象,虽然我只扩展它,但实际上并没有直接创建它。 – gunnx 2012-08-03 08:49:46
@gunnx,这很有趣...我以前没有尝试过,但是我想因为你没有明确地调用它,它不会像通过从php本身调用类那样经历相同的路由,一直是它的原因。虽然我不会推荐使用保留的名字,以防万一您需要在未来扩展您的应用程序时,您永远无法调用该类,重命名它将是一个痛苦,通过整个应用程序迭代。 – Stu 2012-08-03 09:13:34
你试过了吗?我非常确定,如果它是非法的,PHP会对你大吼。 – 2012-08-03 08:31:53