PHP命名空间名为' Public'

时间:2016-08-15 19:14:37

标签: php laravel

在Laravel 4应用程序中,是否可以在名为Public的命名空间中创建控制器?像这样:

<?php namespace Public;

class MyController extends \BaseController {

}

这样做会给我一个错误:

  

语法错误,意外&#39;公共&#39; (T_PUBLIC),期待标识符   (T_STRING)或\(T_NS_SEPARATOR)或&#39; {&#39;

但是,如果我将命名空间更改为PublicControllers,它可以正常工作。这是否意味着Public是一个不能用作命名空间的保留字?

1 个答案:

答案 0 :(得分:7)

public is a reserved word in PHP

  

这些词在PHP中具有特殊含义。其中一些代表看起来像函数的东西,一些看起来像常量,等等 - 但它们不是,真的:它们是语言结构。您不能将以下任何单词用作常量,类名,函数或方法名称。将它们用作变量名通常是可以的,但可能会导致混淆。

虽然这里没有特别提到命名空间,但我们可以查看the PHP grammar,并看到命名空间应该由T_STRING s(反斜杠)连接在一起的T_NS_SEPARATOR组成。由于public有自己的令牌类型(T_PUBLIC,在您的错误消息中提到),因此它不是一个合适的选择。

请注意,这与Laravel无关。