PhpStorm将以下命名空间突出显示为错误。
<?php
namespace App\Http\Controllers\Public;
错误:Expected: identifier
总的来说。对于命名空间,public
,function
,class
等保留关键字是否不可接受?
答案 0 :(得分:4)
PHP manual提示自PHP 7.0.0起,这些关键字被允许作为类,接口和特征的属性,常量和方法名称,除了该类不能用作常量名< / strong>,它还包含请求的关键字public
。
保留关键字列表,您不能将其用于命名空间:
__halt_compiler
,abstract
,and
,array
,as
,break
,callable
,case
,catch
,class
,clone
,const
,continue
,declare
,default
,die
,{ {1}},do
,echo
,else
,elseif
,empty
,enddeclare
,endfor
,{{1 }},endforeach
,endif
,endswitch
,endwhile
,eval
,exit
,extends
,final
,for
,foreach
,function
,global
,goto
,if
,implements
,include
,{ {1}},include_once
,instanceof
,insteadof
,interface
,isset
,list
,namespace
,{{1 }},new
,or
,print
,private
,protected
,public
,require
,require_once
,return
,static
,switch
,throw
,trait
,try
,unset
解决此问题的潜在解决方法是为单词添加额外字符或使用单词的复数形式。另一个机会是在命名空间中升级一级,使用关键字作为前缀 use
。 (甚至后缀,如果您愿意的话)
我的目的是将我的网络应用范围限定为var
(适用于访客和访客)和while
(适用于私人需求)区域。
我选择了xor
和PublicFooController
,而不是试图将public
和private
这些词语合并到我的命名空间中,即使我个人认为这些通常更适合我的需求,因为它们都有前端和后端。但是......无论如何,当我使用namespace App\Http\Controllers\Frontend
和namespace App\Http\Controllers\Backend
时,这使我无法按照我的方式组织文件和命名空间。