# PHP Modernization

> PHP Modernization Skill

- Skill: `comeonoliver/php-modernization` (Agent Skill)
- Install (CLI): `npx skillmds@latest add comeonoliver/php-modernization`
- Raw SKILL.md: https://api.skillmd.com/api/skills/comeonoliver/php-modernization/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ComeOnOliver (https://skillmd.com/u/comeonoliver)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/comeonoliver/php-modernization

---

# PHP Modernization Skill

Modernize PHP applications to PHP 8.x with type safety, PSR compliance, and static analysis.

## 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

## Using Reference Documentation

### PHP Version Features

When implementing PHP 8.0-8.5 features (constructor promotion, readonly properties, enums, match expressions, attributes), consult `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.

### 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.

### 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.

### 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.

### Migration Planning

When planning PHP version upgrades or modernization projects, consult `references/migration-strategies.md` for assessment phases, compatibility checks, and migration workflows.

## 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

## Required Tools

When setting up a modernized PHP project, ensure these tools are configured:

| Tool | Requirement |
|------|-------------|
| PHPStan | **Level 9 minimum**, level 10 recommended |
| PHPat | Required for defined architectures |
| Rector | Required for automated modernization |
| PHP-CS-Fixer | Required with `@PER-CS` ruleset |

## Core Rules

- **DTOs required** over arrays for structured data
- **Backed enums required** for fixed value sets (not constants)
- **PSR interfaces** for type-hinting dependencies (PSR-3, PSR-6, PSR-7, PSR-11, PSR-14, PSR-18)

See `references/core-rules.md` for code examples and scoring criteria.

## Migration Checklist

- [ ] `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

---

> **Contributing:** https://github.com/netresearch/php-modernization-skill

