PHP Ecosystem 是一个面向现代 PHP 开发的技能,适用于用户要求编写 PHP、使用 PHP 8、Composer、PHPUnit、Pest、PHPStan、Psalm、PSR 规范或处理现代 PHP 代码的场景。
用途 该技能围绕现代 PHP 语言特性、工具链与工程规范提供指导,帮助开发者在编写、升级和维护 PHP 项目时保持语言版本、静态分析与运行环境的一致性。
主要能力
- 版本特性映射:列出各 PHP 版本引入的特性,包括 PHP 8.0 的命名参数、属性、构造器属性提升、联合类型、match 表达式、nullsafe 运算符、mixed 类型;PHP 8.1 的枚举、只读属性、Fiber、交集类型、never 返回类型、一等可调用语法、初始化器中的 new;PHP 8.2 的只读类、DNF 类型、null/false/true 独立类型、trait 常量、动态属性弃用;PHP 8.3 的类型化类常量、json_validate()、Randomizer::getFloat() 与 nextFloat()、只读属性深克隆、Override 属性、细粒度 DateTime 异常;PHP 8.4 的属性钩子、非对称可见性、#[Deprecated]、惰性对象、无括号的 new MyClass()->method()、array_find() 等数组函数、mb_trim() 等;PHP 8.5 的管道运算符(|>)、带修改属性的克隆(clone $obj with {...})、#[ NoDiscard] 属性。同时给出支持时间线信息,如活跃支持至 2027 年 12 月、安全支持至 2029 年 12 月,以及预计 2026 年末的维护/升级窗口。
- 推荐配置:提供开发环境 php.ini 建议设置,包括 error_reporting = E_ALL、display_errors = On、log_errors = On、opcache.enable = 1、opcache.validate_timestamps = 1。
- 版本升级一致性:强调 PHP 主/次版本升级是跨切面变更,需一次性对齐所有版本固定点,包括 composer.json 的 php 约束、本地开发环境工具链固定(如 Nix devenv php85、asdf/mise 等)、Docker 基础镜像(CLI 与 FPM 两种变体)、CI 的 setup-php 版本输入、PHPStan 的 phpVersion、Rector 的 withPhpSets()/PhpVersion 目标。升级静态分析工具链后应重新生成基线(phpstan-baseline.neon),而非手工编辑;对需要大范围机械修改的新规则可有意禁用并作为独立技术债跟踪。composer audit 报告的低危公告若由不可控的传递依赖固定,应记录并说明推迟原因,而非静默忽略。
- 类型系统:联合类型、交集类型、DNF 类型(联合与交集组合)的写法与示例。
- 现代语言特性:枚举(带值枚举与单元枚举)、只读类、属性(含通过反射读取)、构造器属性提升、命名参数、类型化类常量、属性钩子(含虚拟属性、旧式 getter/setter 迁移对比)、非对称可见性(public private(set))、#[Deprecated] 属性、惰性对象(lazy ghost)、Fiber(并提示优先使用 ReactPHP、AMPHP、Revolt 等内部使用 Fiber 的异步库)。
- PSR 标准:PSR-1 基础编码规范(仅使用 <?php 与 <?= 标签、UTF-8 无 BOM、类名 StudlyCaps、类常量 UPPER_CASE、方法名 camelCase)、PSR-3 日志、PSR-7 HTTP 消息、PSR-11 容器、PSR-15 中间件、PSR-17 HTTP 工厂、PSR-18 HTTP 客户端等示例。
- 设计模式:如表示值的不可变对象(readonly class Money)等。
使用方式 该技能在用户提出相关 PHP 开发请求时启用,提供上述语言特性、配置建议、升级检查清单与代码示例作为参考。
适用场景 适用于现代 PHP 项目的日常开发、版本升级、静态分析配置、编码规范遵循与设计模式应用。
限制 资料未提供该技能的安装命令、收费方式、平台支持范围或具体使用步骤;部分内容(如 PHP 8.5 特性)标注为对应版本引入,实际可用性取决于运行环境。