所有工具
免費

一份可搜尋、可列印的 PHP 8.3+ 參考——語法、字串、陣列、函式、類別、列舉、屬性和現代特性。免費。

基礎與型別

10
declare(strict_types=1);
強制嚴格純量型別檢查
$x = 1;
變數以錢字號開頭
const MAX = 100;
編譯期常數
gettype($x)
取得值的型別
(int) $x
轉型為整數
is_int($x)
型別檢查輔助(is_string, ...)
int|string $x
聯合型別宣告
?string $x
可為 null 的型別(string 或 null)
$a ?? 'default'
空值合併運算子
$a ??= 'default'
僅在為 null 時賦值

字串

11
"Hello $name"
雙引號會插補變數
'literal $x'
單引號為字面值
$a . $b
串接字串
strlen($s)
字串的位元組長度
str_contains($s, 'a')
檢查是否含子字串
str_starts_with($s, 'a')
檢查前綴
substr($s, 0, 3)
擷取字串的一部分
str_replace('a', 'b', $s)
取代所有出現處
explode(',', $s)
分割為陣列
sprintf('%05.2f', $n)
格式化字串輸出
trim($s)
去除前後空白

陣列

11
$a = [1, 2, 3];
索引陣列字面值
$a = ['k' => 'v'];
關聯陣列
array_map(fn($x) => $x * 2, $a)
轉換每個元素
array_filter($a, fn($x) => $x > 0)
保留符合的元素
array_reduce($a, $fn, 0)
歸納為單一值
in_array($v, $a, true)
嚴格值檢查
array_keys($a)
取得所有鍵
array_merge($a, $b)
合併陣列
[...$a, ...$b]
展開/合併陣列
count($a)
元素數量
[$x, $y] = $a;
陣列解構

函式

9
function f(int $a): int {}
具型別的參數與回傳
function f(int $a = 1) {}
預設參數值
function f(int ...$nums) {}
可變參數
f(...$args)
展開引數
f(name: 'Sam', age: 30)
具名引數
$fn = fn($x) => $x + 1;
箭頭函式(自動擷取作用域)
function () use ($x) {}
擷取變數的閉包
$fn = strlen(...);
一級可呼叫語法
function f(): never {}
永不回傳(拋出或結束)

流程控制

9
if ($a) {} elseif ($b) {} else {}
條件分支
$a ? $b : $c
三元運算式
$a ?: $b
簡短三元(falsy 後備值)
match ($x) { 1, 2 => 'a', default => 'b' }
嚴格、以運算式為基礎的 match
switch ($x) { case 1: break; }
鬆散的多向分支
foreach ($a as $k => $v) {}
走訪鍵與值
for ($i = 0; $i < 10; $i++) {}
計數迴圈
while ($cond) {}
條件成立時持續迴圈
break / continue
跳出或略過迴圈迭代

類別與 OOP

10
class A extends B implements C {}
繼承與介面
public function __construct(private int $id) {}
建構子屬性提升
public readonly string $name;
初始化後不可變
public function f(): static {}
回傳延遲綁定的型別
static::create()
延遲靜態綁定
$obj?->method()
空值安全的方法呼叫
abstract class A {}
無法直接實例化
trait T {} use T;
可重用的橫向程式碼
$obj instanceof A
執行期型別檢查
A::class
完整類別名稱字串

列舉

9
enum Status { case Active; case Draft; }
純列舉
enum Status: string { case A = 'a'; }
有底值的列舉(string/int)
Status::Active
參照列舉案例
Status::from('a')
從底值建立
Status::tryFrom('x')
無效時回傳 null
Status::cases()
所有案例的陣列
$status->value
案例的底值
$status->name
案例的名稱
enum E { public function label() {} }
列舉可有方法

錯誤處理

9
try {} catch (Throwable $e) {}
捕捉錯誤與例外
catch (TypeError | ValueError $e)
捕捉多種型別
catch (Exception)
非擷取式 catch(無變數)
finally {}
在 try/catch 後一律執行
throw new RuntimeException('x')
拋出例外
throw $e;
重新拋出捕捉到的例外
$x = $v ?? throw new Error();
以運算式拋出
$e->getMessage()
讀取錯誤訊息
$e->getPrevious()
取得串連的例外

屬性與現代特性

9
#[Attribute] class Route {}
宣告自訂屬性
#[Route('/home')]
將屬性套用至目標
new ReflectionClass($x)
透過反射檢視類別
$ref->getAttributes()
讀取宣告的屬性
json_encode($data)
序列化為 JSON
json_decode($s, true)
將 JSON 解碼為陣列
array_is_list($a)
鍵依序為 0..n 則為 true
str_word_count($s)
計算字串中的字數
$obj::class
從實例取得類別名稱

沒有條目符合「:q」。


需要協助?
使用此工具時遇到問題?請告訴我們的團隊。
回報問題

將此免費工具新增到你自己的網站 — 複製並貼上下面的程式碼。