php-modernization

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

PHP Modernization Skill

PHP代码现代化技能

Modernize PHP applications to PHP 8.x with type safety, PSR compliance, and static analysis.
将PHP应用现代化升级至PHP 8.x版本,实现类型安全、PSR合规性及静态代码分析。

Expertise Areas

专业领域

  • PHP 8.x: Constructor promotion, readonly, enums, match, attributes, union types
  • PSR/PER Compliance: Active PHP-FIG standards
  • Static Analysis: PHPStan (level 9+), PHPat, Rector, PHP-CS-Fixer
  • Type Safety: DTOs/VOs over arrays, generics via PHPDoc
  • PHP 8.x:构造函数属性提升、只读属性、枚举(enums)、match表达式、属性(attributes)、联合类型
  • PSR/PER合规性:现行PHP-FIG标准
  • 静态代码分析:PHPStan(9级及以上)、PHPat、Rector、PHP-CS-Fixer
  • 类型安全:使用DTO/VO替代数组,通过PHPDoc实现泛型

Using Reference Documentation

参考文档使用说明

PHP Version Features

PHP版本特性

When implementing PHP 8.0-8.5 features (constructor promotion, readonly properties, enums, match expressions, attributes), consult
references/php8-features.md
.
在实现PHP 8.0-8.5版本特性(构造函数属性提升、只读属性、枚举、match表达式、属性)时,请查阅
references/php8-features.md

Standards Compliance

标准合规性

When ensuring PSR/PER compliance or configuring PHP-CS-Fixer with
@PER-CS
, consult
references/psr-per-compliance.md
for active PHP-FIG standards.
When configuring PHPStan levels or understanding level requirements, consult
references/phpstan-compliance.md
for level overview and production configuration.
在确保PSR/PER合规性或为PHP-CS-Fixer配置
@PER-CS
规则时,请查阅
references/psr-per-compliance.md
获取现行PHP-FIG标准。
在配置PHPStan级别或了解级别要求时,请查阅
references/phpstan-compliance.md
获取级别概述及生产环境配置方案。

Static Analysis Tools

静态分析工具

When setting up PHPStan, PHPat, Rector, or PHP-CS-Fixer, consult
references/static-analysis-tools.md
for configuration examples and integration patterns.
在搭建PHPStan、PHPat、Rector或PHP-CS-Fixer时,请查阅
references/static-analysis-tools.md
获取配置示例及集成模式。

Type Safety

类型安全

When implementing type-safe code or migrating from arrays to DTOs, consult
references/type-safety.md
for type system strategies and best practices.
When creating request DTOs or handling safe integer conversion, consult
references/request-dtos.md
for DTO patterns and validation approaches.
在实现类型安全代码或从数组迁移至DTO时,请查阅
references/type-safety.md
获取类型系统策略及最佳实践。
在创建请求DTO或处理安全整数转换时,请查阅
references/request-dtos.md
获取DTO设计模式及验证方法。

Architecture Patterns

架构模式

When implementing adapter registry patterns for multiple external services, consult
references/adapter-registry-pattern.md
for dynamic adapter instantiation from database configuration.
When using Symfony DI, events, or modern framework patterns, consult
references/symfony-patterns.md
for architecture best practices.
在为多个外部服务实现适配器注册模式时,请查阅
references/adapter-registry-pattern.md
获取基于数据库配置的动态适配器实例化方案。
在使用Symfony依赖注入(DI)、事件或现代框架模式时,请查阅
references/symfony-patterns.md
获取架构最佳实践。

Migration Planning

迁移规划

When planning PHP version upgrades or modernization projects, consult
references/migration-strategies.md
for assessment phases, compatibility checks, and migration workflows.
在规划PHP版本升级或现代化项目时,请查阅
references/migration-strategies.md
获取评估阶段、兼容性检查及迁移流程相关内容。

Running Scripts

运行脚本

Project Verification

项目验证

To verify a PHP project meets modernization requirements:
bash
scripts/verify-php-project.sh /path/to/project
This script checks:
  • PHPStan level compliance
  • PHP-CS-Fixer configuration
  • Type declaration coverage
  • DTO usage patterns
要验证PHP项目是否符合现代化要求:
bash
scripts/verify-php-project.sh /path/to/project
该脚本会检查以下内容:
  • PHPStan级别合规性
  • PHP-CS-Fixer配置
  • 类型声明覆盖率
  • DTO使用模式

Required Tools

必备工具

When setting up a modernized PHP project, ensure these tools are configured:
ToolRequirement
PHPStanLevel 9 minimum, level 10 recommended
PHPatRequired for defined architectures
RectorRequired for automated modernization
PHP-CS-FixerRequired with
@PER-CS
ruleset
在搭建现代化PHP项目时,请确保配置以下工具:
工具要求
PHPStan最低9级,推荐10级
PHPat定义架构时必备
Rector自动化现代化改造必备
PHP-CS-Fixer需配置
@PER-CS
规则集

Core Rules

核心规则

DTOs Required

强制使用DTO

When passing structured data, always use DTOs instead of arrays:
php
// Bad: public function createUser(array $data): array
// Good: public function createUser(CreateUserDTO $dto): UserDTO
传递结构化数据时,必须使用DTO替代数组:
php
// 错误示例:public function createUser(array $data): array
// 正确示例:public function createUser(CreateUserDTO $dto): UserDTO

Enums Required

强制使用枚举

When defining fixed value sets, always use backed enums instead of constants:
php
// Bad: const STATUS_DRAFT = 'draft'; function setStatus(string $s)
// Good: enum Status: string { case Draft = 'draft'; }
定义固定值集合时,必须使用后台枚举(backed enums)替代常量:
php
// 错误示例:const STATUS_DRAFT = 'draft'; function setStatus(string $s)
// 正确示例:enum Status: string { case Draft = 'draft'; }

PSR Interface Compliance

PSR接口合规性

When type-hinting dependencies, use PSR interfaces (PSR-3, PSR-6, PSR-7, PSR-11, PSR-14, PSR-18).
对依赖进行类型提示时,请使用PSR接口(PSR-3、PSR-6、PSR-7、PSR-11、PSR-14、PSR-18)。

Migration Checklist

迁移检查清单

When modernizing a PHP project, verify these requirements:
  • declare(strict_types=1)
    in all files
  • PER Coding Style via PHP-CS-Fixer (
    @PER-CS
    )
  • PHPStan level 9+ (level 10 for new projects)
  • PHPat architecture tests
  • Return types and parameter types on all methods
  • DTOs for data transfer, no array params/returns
  • Backed enums for all status/type values
  • Type-hint against PSR interfaces
对PHP项目进行现代化改造时,请验证以下要求:
  • 所有文件中添加
    declare(strict_types=1)
    声明
  • 通过PHP-CS-Fixer实现PER编码风格(
    @PER-CS
  • PHPStan级别达到9级及以上(新项目推荐10级)
  • 配置PHPat架构测试
  • 所有方法添加返回类型和参数类型声明
  • 使用DTO进行数据传递,禁止使用数组作为参数或返回值
  • 所有状态/类型值使用后台枚举(backed enums)
  • 针对PSR接口进行类型提示

Scoring Criteria

评分标准

CriterionRequirement
PHPStanLevel 9 minimum
PHP-CS-Fixer
@PER-CS
zero violations
DTOs/VOsNo array params/returns for structured data
EnumsBacked enums for fixed value sets

评估项要求
PHPStan最低9级
PHP-CS-Fixer
@PER-CS
规则零违规
DTO/VO结构化数据传递禁止使用数组作为参数或返回值
枚举固定值集合使用后台枚举(backed enums)