用途:帮助把既有 PHP 项目升级到现代写法,覆盖 PHP 8.1-8.5 特性、PSR/PHP-FIG/PER-CS 规范符合性,以及 PHPStan、Rector、PHP-CS-Fixer、PHPat 等工具的使用。
主要能力:提供发现、排查、应用三步流程。发现阶段可运行 uv run ${CLAUDE_SKILL_DIR}/scripts/introspect.py(轻量)或 verify_php_project.py --summary(完整,含 agent_actions[]);排查阶段用 --check PM-XX 逐项定位;应用阶段先执行 uv run ${CLAUDE_SKILL_DIR}/scripts/modernize_loop.py --mode dry-run,审阅记录后再实际应用。参考资料按需加载,涵盖 PHP 8.0-8.5 特性、PSR/PER-CS、PHPStan 配置、静态分析工具、DTO/VO、适配器注册表、多版本兼容、Symfony、PSR-15 中间件、Doctrine、API Platform、不可变性、契约与不变量、变异测试、迁移策略、PHPUnit 12→13 等主题。
使用方式与限制:迁移清单包括声明 strict_types=1、使用 @PER-CS、PHPStan ≥9(新项目 10)、PHPat 分层边界、方法返回与参数类型、用 DTO 替代数组、用 backed enum 替代常量、类型提示使用 PSR 接口、#[Override](8.3+)、#[SensitiveParameter](8.2+)、typed constants(8.3+)、仅在 DTO/VO/事件上使用 readonly、属性钩子(8.4)、array_find/any/all(8.4)、管道 |>(8.5)、PHPUnit 12+ 中 stub 用 createStub、mock 用 createMock + expects。硬性约束:不得对 Doctrine 实体或 mapped-superclasses 使用 readonly;Rector 必须加 --dry-run,并直接调用 vendor/bin/rector;提升 PHPStan 级别前必须重新生成并提交 baseline,只能缩小不能删除;不得对 mock 目标或扩展点批量加 final;不得编辑 @generated 文件及 var/cache/、vendor/、node_modules/、.Build/ 下文件;共享树中不得对范围外文件执行 git checkout --;vendor 变更后需先 rm -rf /tmp/phpstan-* var/cache/phpstan;不得把 createMock 批量替换为 createStub。该技能基于 Netresearch DTT GmbH 的工作,原仓库为 https://github.com/netresearch/php-modernization-skill,由 webconsulting.at 适配。