命名空间中允许PHP保留关键字?(public,private,default)

z9zf31ra  于 2023-04-04  发布在  PHP
关注(0)|答案(2)|浏览(105)

PhpStorm将以下命名空间突出显示为错误。

<?php

namespace App\Http\Controllers\Public;

错误:Expected: identifier
一般情况下。保留关键字如publicfunctionclass不能用于命名空间吗?

xkftehaa

xkftehaa1#

PHP manual提示,从PHP 7.0.0开始,这些关键字被允许作为类、接口和traits的属性、常量和方法名称,除了class不能用作常量名称,它还包含了请求的关键字public

保留关键字列表,不能用于命名空间:

__halt_compilerabstractandarrayasbreakcallablecasecatchclasscloneconstcontinuedeclaredefaultdiedoechoelseelseifemptyenddeclareendforendforeachendifendswitchendwhileevalexitextendsfinalforforeachfunctionglobalgotoifimplementsincludeinclude_onceinstanceofinsteadofinterfaceissetlistnamespaceneworprintprivateprotectedpublicrequirerequire_oncereturnstaticswitchthrowtraittryunsetusevarwhilexor
解决此问题的一个可能的解决方法是向单词添加额外的字符或使用单词的复数形式。另一个机会是在名称空间中向上一级,使用关键字作为前缀PublicFooController . (如果您喜欢,甚至可以使用后缀)
我的目的是将我的Web应用程序扩展到public(针对客人和访客)和private(针对私人需求)区域。
我选择了namespace App\Http\Controllers\Frontendnamespace App\Http\Controllers\Backend,而不是试图将单词publicprivate合并到我的命名空间中,即使我个人认为这些通常更适合我的需求,因为两者都有前端和后端。但是......无论如何,这让我避免了以我会做的方式组织文件和命名空间的麻烦,当我使用publicprivate时。

fhg3lkii

fhg3lkii2#

在PHP 8中,这一点有所改变。命名空间现在是单个标记,可以包含保留字。

相关问题