作为类名部分无效的 PHP 关键字列表

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)