mcpField
P
php-modernization

php-modernization

github.com/dirnbauer开发3399 次安装14 周前更新
代码仓库

关于 php-modernization

面向 Agent 的 PHP 现代化技能,指导项目检查、逐项问题分析和试运行现代化流程,并提供按版本索引的参考资料及迁移、分析和测试约束。

主要功能

  1. 01项目检查脚本
  2. 02逐项问题检查
  3. 03试运行现代化流程
  4. 04PHP 版本参考索引
  5. 05迁移与测试约束

适用场景

  1. 01评估 PHP 项目的现代化工作
  2. 02检查单项现代化问题
  3. 03规划安全的 PHP 与测试套件升级

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dirnbauer/webconsulting-skills --skill php-modernization

安装后在 Claude Code 中输入/php-modernization确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

checkpoints.yaml
references/
adapter-registry-pattern.md
api-platform-edges.md
contracts-and-invariants.md
core-rules.md
doctrine-modernization-edges.md
immutability-boundaries.md
migration-strategies.md
multi-agent-pitfalls.md
multi-version-adapters.md
mutation-testing.md
php-8.4.md
php-8.5.md
php-cs-fixer-deprecations.md
php8-features.md
phpstan-compliance.md
phpunit-modernization.md
psr-per-compliance.md
psr15-middleware-architecture.md
request-dtos.md
static-analysis-tools.md
symfony-patterns.md
type-safety.md
scripts/
_common.py
introspect.py
modernize_loop.py
verify_php_project.py
verify-php-project.sh
templates/
composer-scripts.json
templates/github-actions/
php-modernization.yml

详细介绍

PHP 现代化

Agent 契约

  1. 发现:运行 uv run ${CLAUDE_SKILL_DIR}/scripts/introspect.py(开销低),或运行 verify_php_project.py --summary(完整检查,包含 agent_actions[])。
  2. 深入检查:针对每项发现运行 ... --check PM-XX。对超过 3 项的问题进行分类时,使用完整输出。
  3. 应用:运行 uv run ${CLAUDE_SKILL_DIR}/scripts/modernize_loop.py --mode dry-run。应用更改前先审阅执行记录。
  4. 参考资料:按需加载;不要预先加载。

参考资料索引

需求阅读
PHP 8.0-8.3 基线references/php8-features.md
PHP 8.4references/php-8.4.md
PHP 8.5references/php-8.5.md
PSR / PER-CSreferences/psr-per-compliance.md
PHPStan 配置references/phpstan-compliance.md
静态分析references/static-analysis-tools.md
PHP-CS-Fixer 弃用项references/php-cs-fixer-deprecations.md
DTO / VO / 输入references/type-safety.md、references/request-dtos.md
适配器 / 注册表references/adapter-registry-pattern.md
多版本兼容references/multi-version-adapters.md
Symfony 模式references/symfony-patterns.md
PSR-15 中间件references/psr15-middleware-architecture.md
Doctrine 边界情况references/doctrine-modernization-edges.md
API Platformreferences/api-platform-edges.md
不可变性references/immutability-boundaries.md
契约与不变量references/contracts-and-invariants.md
变异测试references/mutation-testing.md
迁移规划references/migration-strategies.md
PHPUnit 12→13、mock 与 stubreferences/phpunit-modernization.md
多 Agent 调度隐患references/multi-agent-pitfalls.md

严格限制

  • 绝不要对 Doctrine 实体或映射超类应用 readonly(嵌入式对象请参阅 references/doctrine-modernization-edges.md)。
  • 绝不要在未使用 --dry-run 的情况下运行 Rector。直接调用 vendor/bin/rector——根据配置,composer 脚本别名可能会丢弃通过 -- 转发的标志。
  • 提高 PHPStan 级别前,必须重新生成并提交基线。应缩小基线,绝不要删除。
  • 未经确认,绝不要对 mock 目标或扩展点一概应用 final。
  • 绝不要编辑 @generated 文件或 var/cache/、vendor/、node_modules/、.Build/ 下的文件。
  • 在共享工作树中,绝不要对范围外的文件运行 git checkout --——请使用 git stash / git diff。
  • vendor 变更后,绝不要信任 PHPStan 的旧缓存:先运行 rm -rf /tmp/phpstan-* var/cache/phpstan。
  • 绝不要批量替换 createMock → createStub——应改为 expects(...)->method(...)->with(...)。

迁移清单

  • 所有文件都添加 declare(strict_types=1)
  • 使用 @PER-CS,不使用已弃用的别名
  • PHPStan ≥9(treatPhpDocTypesAsCertain: false);新项目使用 10
  • 使用 PHPat 检查层边界
  • 所有方法都指定返回类型和参数类型
  • 优先使用 DTO,而非数组;优先使用有底层值的枚举,而非常量
  • 类型提示使用 PSR 接口
  • 使用 #[Override](8.3+)、#[SensitiveParameter](8.2+)、类型化常量(8.3+)
  • 仅对 DTO / VO / 事件使用 readonly
  • 属性钩子(8.4);array_find/any/all(8.4);管道运算符 |>(8.5)
  • PHPUnit 12+:stub 使用 createStub,mock 使用 createMock + expects(13 中不使用 self::any())
  • Rector 使用 withComposerBased(symfony: true)(按版本区分的 SymfonySetList::SYMFONY_* 已标记为 @deprecated)

致谢与归属

本技能基于 Netresearch DTT GmbH 的出色工作。

原始代码库:https://github.com/netresearch/php-modernization-skill

版权所有 (c) Netresearch DTT GmbH — 方法论与最佳实践(MIT / CC-BY-SA-4.0)

特别感谢 Netresearch DTT GmbH 为 TYPO3 社区慷慨提供开源贡献,这些贡献帮助塑造了本技能集。 由 webconsulting.at 改编,纳入本技能集

评论

支持 Markdown