2012-08-03 93 views
2

最近我已经开始将我的框架转换为使用php命名空间和一个我似乎无法找到答案的问题 - 是否使用保留字是“合法”的作为'对象','数组','字符串'作为命名空间内的命名空间和类名称?一个例子是:作为名称空间和类名的PHP保留字

namespace System\Object; 


class String { } 

class Array { } 
+0

你试过了吗?我非常确定,如果它是非法的,PHP会对你大吼。 – 2012-08-03 08:31:53

回答

9

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中,你不得不改变名字,你不必改变它,只要你不使用完全相同的名字作为保留字,一个字符就会生效。

希望有帮助!

+0

感谢Stu - 这就是我的想法,但无法用我的框架正确地测试它,因为目前在我转换所有内容时存在很多问题。 – 2012-08-03 08:47:48

+0

我没有问题之前使用过类对象,虽然我只扩展它,但实际上并没有直接创建它。 – gunnx 2012-08-03 08:49:46

+0

@gunnx,这很有趣...我以前没有尝试过,但是我想因为你没有明确地调用它,它不会像通过从php本身调用类那样经历相同的路由,一直是它的原因。虽然我不会推荐使用保留的名字,以防万一您需要在未来扩展您的应用程序时,您永远无法调用该类,重命名它将是一个痛苦,通过整个应用程序迭代。 – Stu 2012-08-03 09:13:34

相关问题