PHP 速查表
一份可搜索、可打印的 PHP 8.3+ 参考——语法、字符串、数组、函数、类、枚举、属性和现代特性。免费。
基础与类型
10declare(strict_types=1);
强制严格标量类型检查
$x = 1;
变量以美元符号开头
const MAX = 100;
编译期常量
gettype($x)
获取值的类型
(int) $x
强制转换为整数
is_int($x)
类型检查辅助函数(is_string 等)
int|string $x
联合类型声明
?string $x
可空类型(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;
数组解构
函数
9function 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 {}
永不返回(抛出或退出)
控制流
9if ($a) {} elseif ($b) {} else {}
条件分支
$a ? $b : $c
三元表达式
$a ?: $b
短三元(假值回退)
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
退出或跳过本次循环
类与面向对象
10class 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
完全限定类名字符串
枚举
9enum 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() {} }
枚举可以有方法
错误处理
9try {} 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 {}
声明自定义 attribute
#[Route('/home')]
将 attribute 应用到目标
new ReflectionClass($x)
通过反射检视类
$ref->getAttributes()
读取已声明的 attribute
json_encode($data)
序列化为 JSON
json_decode($s, true)
将 JSON 解码为数组
array_is_list($a)
键为 0..n 顺序时为 true
str_word_count($s)
统计字符串中的单词数
$obj::class
从实例获取类名
没有条目匹配“:q”。
需要帮助?
使用此工具时遇到问题?请告诉我们的团队。