关键字列表

这些词在 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__
添加备注

用户贡献备注 5 个备注

28
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
19
Thomas Hansen
7 年前
请注意,保留字仍然不允许用作命名空间或其一部分

<?php
namespace MyNameSpace\List;

class
Test
{
}
?>

这将失败并出现解析错误:语法错误,意外的 'List' (T_LIST),期望标识符 (T_STRING)
11
Chris
11 年前
以下是数组形式

<?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() 语句。
-2
Chocopie
4 个月前
从 php8 开始,`Interface` 或 `Trait` 等保留字可以用作命名空间的一部分。

<?php
namespace App\Entity\Interface;

interface
FooInterface
{

}

https://wiki.php.net/rfc/namespaced_names_as_token
-61
Johnny D.
4 年前
const FORBIDDEN_TYPES = [
'null',

'bool',
'false',
'true',

'int',
'float',

'string',
];
To Top