2024 年 PHP 日本研討會

關鍵字列表

這些字在 PHP 中具有特殊含義。有些代表看起來像函式,有些看起來像常數等等 - 但它們實際上並非如此:它們是語言結構。以下字詞不能用作常數、類別名稱或函式名稱。但是,它們可以用作類別、介面和特性(trait)的屬性、常數和方法名稱,但 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 迴圈 (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 個月前
從 PHP 8 開始,保留關鍵字(例如 `Interface` 或 `Trait`)可以用作命名空間的一部分。

<?php
namespace App\Entity\Interface;

interface
FooInterface
{

}

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