在Laravel 4应用程序中,是否可以在名为Public
的命名空间中创建控制器?像这样:
<?php namespace Public;
class MyController extends \BaseController {
}
这样做会给我一个错误:
语法错误,意外&#39;公共&#39; (T_PUBLIC),期待标识符 (T_STRING)或\(T_NS_SEPARATOR)或&#39; {&#39;
但是,如果我将命名空间更改为PublicControllers
,它可以正常工作。这是否意味着Public
是一个不能用作命名空间的保留字?
答案 0 :(得分:7)
public
is a reserved word in PHP:
这些词在PHP中具有特殊含义。其中一些代表看起来像函数的东西,一些看起来像常量,等等 - 但它们不是,真的:它们是语言结构。您不能将以下任何单词用作常量,类名,函数或方法名称。将它们用作变量名通常是可以的,但可能会导致混淆。
虽然这里没有特别提到命名空间,但我们可以查看the PHP grammar,并看到命名空间应该由T_STRING
s(反斜杠)连接在一起的T_NS_SEPARATOR
组成。由于public
有自己的令牌类型(T_PUBLIC
,在您的错误消息中提到),因此它不是一个合适的选择。
请注意,这与Laravel无关。