PHP Conference Japan 2024

关键字列表

这些词在 PHP 中具有特殊含义。其中一些表示看起来像函数的东西,一些看起来像常量,等等 - 但实际上它们不是:它们是语言结构。以下词语不能用作常量、类名或函数名。但是,它们允许作为类、接口和特性的属性、常量和方法名称,但class不能用作常量名。

PHP 关键字
__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 finally fn (自 PHP 7.4 起) for foreach
function global goto if implements
include include_once instanceof insteadof interface
isset() list() match (自 PHP 8.0 起) namespace new
or print private protected public
readonly (自 PHP 8.1.0 起) * require require_once return static
switch throw trait try unset()
use var while xor yield
yield from        

* readonly 可用作函数名。

编译时常量
__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__
__NAMESPACE__ __TRAIT__
添加注释

用户贡献注释 4 条注释

martindilling at gmail dot com
11 年前
查找所有关键字的正则表达式

\b(
(a(bstract|nd|rray|s))|
(c(a(llable|se|tch)|l(ass|one)|on(st|tinue)))|
(d(e(clare|fault)|ie|o))|
(e(cho|lse(if)?|mpty|nd(declare|for(each)?|if|switch|while)|val|x(it|tends)))|
(f(inal|or(each)?|unction))|
(g(lobal|oto))|
(i(f|mplements|n(clude(_once)?|st(anceof|eadof)|terface)|sset))|
(n(amespace|ew))|
(p(r(i(nt|vate)|otected)|ublic))|
(re(quire(_once)?|turn))|
(s(tatic|witch))|
(t(hrow|r(ait|y)))|
(u(nset|se))|
(__halt_compiler|break|list|(x)?or|var|while)
)\b
Thomas Hansen
8 年前
请注意,保留字仍然不允许用作命名空间或其一部分

<?php
namespace MyNameSpace\List;

class
Test
{
}
?>

这将导致解析错误:语法错误,意外的“List”(T_LIST),预期标识符(T_STRING)
Chris
12 年前
以下是数组形式

<?php
$keywords
= array('__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');

$predefined_constants = array('__CLASS__', '__DIR__', '__FILE__', '__FUNCTION__', '__LINE__', '__METHOD__', '__NAMESPACE__', '__TRAIT__');
?>

连同 get_defined_functions() 和 get_defined_constants() 一起,这对于检查 eval() 语句很有用。
Chocopie
8 个月前
从 php8 开始,保留关键字(如 `Interface` 或 `Trait`)可以用作命名空间的一部分。

<?php
namespace App\Entity\Interface;

interface
FooInterface
{

}

https://wiki.php.net/rfc/namespaced_names_as_token
To Top