用途:本技能用于讲解和示范现代 PHP(7.4+、8.0+、8.1+、8.2+)的新特性,帮助开发者从松散类型的脚本写法转向类型安全、可静态分析的应用开发。资料覆盖类型化属性与参数、联合与交集类型、match 表达式、枚举、属性(注解)、命名参数及其他现代特性,并给出最佳实践与常见陷阱。
主要能力:类型化属性支持 string、int、?string 可空以及构造函数属性提升(PHP 8.0+),配合返回类型(含 void、never、mixed、static)在运行时强制类型。联合类型(PHP 8.0+)允许参数接受多种类型,交集类型(PHP 8.1+)要求同时满足多个接口,DNF 类型(PHP 8.2+)可组合。match 表达式使用严格比较(===)并支持穷尽检查,比 switch 更安全。枚举(PHP 8.1+)可定义纯枚举或带 int/string 值的 backed enum,支持方法、静态方法、cases() 迭代、from() 与 tryFrom()。属性(注解)可附加到类、方法、属性,通过反射读取,用于路由、验证、缓存、ORM 映射等。命名参数(PHP 8.0+)可按名称传参、跳过默认值;只读属性(8.1+)与只读类(8.2+)表达不可变数据;还有一等可调用语法、初始化器中的 new、nullsafe 操作符、throw 表达式、str_contains 等字符串函数。
使用方式:主要在编写 PHP 代码时按需采用这些语法。示例包括在文件顶部声明严格类型,为类属性添加类型,用 match 替代 switch,用 enum 替代魔法字符串,用属性加反射构建声明式配置。
适用场景:框架与应用的类型建模、路由与验证元数据、ORM 实体映射、状态与优先级等有限值集合表达。
限制:资料未提供具体安装命令、版本兼容矩阵、性能数据或收费信息;部分语法需对应 PHP 版本,在 match 中省略 default 且未覆盖所有枚举分支会抛出 UnhandledMatchError,枚举不适合非穷尽集合(如用户 ID);忘记开启严格类型会削弱类型声明效果。