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

时间:2016-01-09 03:15:08

标签: php parsing namespaces

对于PHP 5.2,我正在转换一些用“穷人的命名空间”编写的旧代码,用于PHP 5.2

class Foo_Bar_Model_Break_Baz {}

我正在将此代码转换为需要真正名称空间的新系统,例如

namespace Foo\Bar\Model\Break;
class Baz
{
}

不幸的是,PHP解析器无法处理上述类,因为Break是保留字

Parse error: syntax error, unexpected 'Break' (T_BREAK), expecting identifier (T_STRING) in

作为PHP完整类名/命名空间的一部分,是否有一个解析器令牌无效的列表?一些最初的谷歌搜索和php.net没有发现任何东西,但我可能使用错误的搜索条件。

1 个答案:

答案 0 :(得分:4)

在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