Ala*_*orm 3 php parsing namespaces
我正在为 PHP 5.2 转换一些像这样用“穷人的命名空间”编写的旧代码
类 Foo_Bar_Model_Break_Baz{}
我正在为一个需要真实命名空间的新系统转换此代码,就像这样
namespace Foo\Bar\Model\Break;
class Baz
{
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,PHP 解析器无法处理上述类,因为它Break是一个保留字
Parse error: syntax error, unexpected 'Break' (T_BREAK), expecting identifier (T_STRING) in
Run Code Online (Sandbox Code Playgroud)
是否有一个列表,列出哪些解析器令牌作为 PHP 完整类名/命名空间的一部分无效?一些最初的谷歌搜索和 php.net 没有找到任何东西,但我可能使用了错误的搜索词。
小智 6
这在 PHP 7 中随着Content Aware Lexer的添加而改变。此 RFC 将保留关键字的数量从 64 减少到 1,并且该关键字是专门命名的类常量class(不区分大小写)。
引用 RFC,PHP <= 5.6.x 中的全局保留关键字列表是:
callable class trait extends implements static abstract final public
protected private const enddeclare endfor endforeach endif endwhile and
global goto instanceof insteadof interface namespace new or xor try
use var exit list clone include include_once throw array print echo
require require_once return else elseif default break continue switch
yield function if endswitch finally for foreach declare case do while
as catch die self parent
Run Code Online (Sandbox Code Playgroud)