PhpStorm将以下命名空间突出显示为错误。
<?php namespace App\Http\Controllers\Public;
错误:Expected: identifier一般情况下。保留关键字如public,function,class不能用于命名空间吗?
Expected: identifier
public
function
class
xkftehaa1#
PHP manual提示,从PHP 7.0.0开始,这些关键字被允许作为类、接口和traits的属性、常量和方法名称,除了class不能用作常量名称,它还包含了请求的关键字public。
保留关键字列表,不能用于命名空间:
__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,clone,const,continue,declare,default,die,do,echo,else,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,for,foreach,function,global,goto,if,implements,include,include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,print,private,protected,public,require、require_once、return、static、switch、throw、trait、try、unset、use、var、while、xor解决此问题的一个可能的解决方法是向单词添加额外的字符或使用单词的复数形式。另一个机会是在名称空间中向上一级,使用关键字作为前缀PublicFooController . (如果您喜欢,甚至可以使用后缀)我的目的是将我的Web应用程序扩展到public(针对客人和访客)和private(针对私人需求)区域。我选择了namespace App\Http\Controllers\Frontend和namespace App\Http\Controllers\Backend,而不是试图将单词public和private合并到我的命名空间中,即使我个人认为这些通常更适合我的需求,因为两者都有前端和后端。但是......无论如何,这让我避免了以我会做的方式组织文件和命名空间的麻烦,当我使用public和private时。
__halt_compiler
abstract
and
array
as
break
callable
case
catch
clone
const
continue
declare
default
die
do
echo
else
elseif
empty
enddeclare
endfor
endforeach
endif
endswitch
endwhile
eval
exit
extends
final
for
foreach
global
goto
if
implements
include
include_once
instanceof
insteadof
interface
isset
list
namespace
new
or
print
private
protected
require
require_once
return
static
switch
throw
trait
try
unset
use
var
while
xor
PublicFooController
namespace App\Http\Controllers\Frontend
namespace App\Http\Controllers\Backend
fhg3lkii2#
在PHP 8中,这一点有所改变。命名空间现在是单个标记,可以包含保留字。
2条答案
按热度按时间xkftehaa1#
PHP manual提示,从PHP 7.0.0开始,这些关键字被允许作为类、接口和traits的属性、常量和方法名称,除了class不能用作常量名称,它还包含了请求的关键字
public
。保留关键字列表,不能用于命名空间:
__halt_compiler
,abstract
,and
,array
,as
,break
,callable
,case
,catch
,class
,clone
,const
,continue
,declare
,default
,die
,do
,echo
,else
,elseif
,empty
,enddeclare
,endfor
,endforeach
,endif
,endswitch
,endwhile
,eval
,exit
,extends
,final
,for
,foreach
,function
,global
,goto
,if
,implements
,include
,include_once
,instanceof
,insteadof
,interface
,isset
,list
,namespace
,new
,or
,print
,private
,protected
,public
,require
、require_once
、return
、static
、switch
、throw
、trait
、try
、unset
、use
、var
、while
、xor
解决此问题的一个可能的解决方法是向单词添加额外的字符或使用单词的复数形式。另一个机会是在名称空间中向上一级,使用关键字作为前缀
PublicFooController
. (如果您喜欢,甚至可以使用后缀)我的目的是将我的Web应用程序扩展到
public
(针对客人和访客)和private
(针对私人需求)区域。我选择了
namespace App\Http\Controllers\Frontend
和namespace App\Http\Controllers\Backend
,而不是试图将单词public
和private
合并到我的命名空间中,即使我个人认为这些通常更适合我的需求,因为两者都有前端和后端。但是......无论如何,这让我避免了以我会做的方式组织文件和命名空间的麻烦,当我使用public
和private
时。fhg3lkii2#
在PHP 8中,这一点有所改变。命名空间现在是单个标记,可以包含保留字。