Loading...
Loading...
Compare original and translation side by side
references/php8-features.mdreferences/php8-features.md@PER-CSreferences/psr-per-compliance.mdreferences/phpstan-compliance.md@PER-CSreferences/psr-per-compliance.mdreferences/phpstan-compliance.mdreferences/static-analysis-tools.mdreferences/static-analysis-tools.mdreferences/type-safety.mdreferences/request-dtos.mdreferences/type-safety.mdreferences/request-dtos.mdreferences/adapter-registry-pattern.mdreferences/symfony-patterns.mdreferences/adapter-registry-pattern.mdreferences/symfony-patterns.mdreferences/migration-strategies.mdreferences/migration-strategies.mdscripts/verify-php-project.sh /path/to/projectscripts/verify-php-project.sh /path/to/project| Tool | Requirement |
|---|---|
| PHPStan | Level 9 minimum, level 10 recommended |
| PHPat | Required for defined architectures |
| Rector | Required for automated modernization |
| PHP-CS-Fixer | Required with |
| 工具 | 要求 |
|---|---|
| PHPStan | 最低9级,推荐10级 |
| PHPat | 定义架构时必备 |
| Rector | 自动化现代化改造必备 |
| PHP-CS-Fixer | 需配置 |
// Bad: public function createUser(array $data): array
// Good: public function createUser(CreateUserDTO $dto): UserDTO// 错误示例:public function createUser(array $data): array
// 正确示例:public function createUser(CreateUserDTO $dto): UserDTO// Bad: const STATUS_DRAFT = 'draft'; function setStatus(string $s)
// Good: enum Status: string { case Draft = 'draft'; }// 错误示例:const STATUS_DRAFT = 'draft'; function setStatus(string $s)
// 正确示例:enum Status: string { case Draft = 'draft'; }declare(strict_types=1)@PER-CSdeclare(strict_types=1)@PER-CS| Criterion | Requirement |
|---|---|
| PHPStan | Level 9 minimum |
| PHP-CS-Fixer | |
| DTOs/VOs | No array params/returns for structured data |
| Enums | Backed enums for fixed value sets |
Contributing: https://github.com/netresearch/php-modernization-skill
| 评估项 | 要求 |
|---|---|
| PHPStan | 最低9级 |
| PHP-CS-Fixer | |
| DTO/VO | 结构化数据传递禁止使用数组作为参数或返回值 |
| 枚举 | 固定值集合使用后台枚举(backed enums) |