Agent Skill: PHP 8.x modernization patterns. Use when upgrading to PHP 8.1/8.2/8.3/8.4/8.5, implementing type safety, or achieving PHPStan level 10. By Netresearch.
Modernizes PHP to 8.x with strict types, PSR compliance, and PHPStan level 9+. Triggered when upgrading PHP versions, implementing type safety, or configuring static analysis tools.
/plugin marketplace add netresearch/php-modernization-skill/plugin install php-modernization@netresearch-claude-code-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/adapter-registry-pattern.mdreferences/migration-strategies.mdreferences/php8-features.mdreferences/phpstan-compliance.mdreferences/psr-per-compliance.mdreferences/request-dtos.mdreferences/static-analysis-tools.mdreferences/symfony-patterns.mdreferences/type-safety.mdscripts/verify-php-project.shModernize PHP applications to PHP 8.x with type safety, PSR compliance, and static analysis.
| Reference | Purpose |
|---|---|
references/php8-features.md | PHP 8.0-8.5 features |
references/psr-per-compliance.md | Active PSR/PER standards |
references/static-analysis-tools.md | PHPStan, PHPat, Rector, PHP-CS-Fixer configs |
references/type-safety.md | Type system strategies |
references/request-dtos.md | Request DTOs, safe integer handling |
references/symfony-patterns.md | Modern Symfony architecture |
| Tool | Requirement |
|---|---|
| PHPStan | Level 9 minimum, level 10 recommended |
| PHPat | Required for defined architectures |
| Rector | Required for modernization |
| PHP-CS-Fixer | Required with @PER-CS |
See references/static-analysis-tools.md for configuration examples.
DTOs Required - Never pass raw arrays for structured data:
// Bad: public function createUser(array $data): array
// Good: public function createUser(CreateUserDTO $dto): UserDTO
Enums Required - Never use string/int constants for fixed values:
// Bad: const STATUS_DRAFT = 'draft'; function setStatus(string $s)
// Good: enum Status: string { case Draft = 'draft'; }
PSR Compliance - Type-hint against PSR interfaces (PSR-3, PSR-6, PSR-7, PSR-11, PSR-14, PSR-18).
declare(strict_types=1) in all files@PER-CS)| Criterion | Requirement |
|---|---|
| PHPStan | Level 9 minimum |
| PHP-CS-Fixer | @PER-CS zero violations |
| DTOs/VOs | No array params/returns for structured data |
| Enums | Backed enums for fixed value sets |
./scripts/verify-php-project.sh /path/to/project
Contributing: https://github.com/netresearch/php-modernization-skill