php-best-practices

PHP 8.x modern patterns, PSR standards, and SOLID principles. Use when reviewing PHP code, checking type safety, auditing code quality, or ensuring PHP best practices. Triggers on "review PHP", "check PHP code", "audit PHP", or "PHP best practices".

By asyrafhussin · 3,128 installs

npx skills add asyrafhussin/agent-skills --skill php-best-practices

Source repository · Upstream listing

PHP Best Practices Modern PHP 8.x patterns, PSR standards, type system best practices, and SOLID principles. Contains 51 rules for writing clean, maintainable PHP code. Step 1: Detect PHP Version Always check the project's PHP version before giving any advice. Features vary significantly across 8.0 8.5. Never suggest syntax that doesn't exist in the project's version. Check composer.json for the required PHP version: Also check the runtime version: Feature Availability by Version Feature Version Rule Prefix Union types, match, nullsafe, named args, constructor promotion, attributes 8.0+ type , modern Enums, readonly properties, intersection types, first class callables, never, fibers 8.1+ modern Readonly classes, DNF types, true/false/null standalone types 8.2+ modern Typed class constants, [\Override] , json validate() 8.3+ modern Property hooks, asymmetric visibility, [\Deprecated] , new without parens 8.4+ modern Pipe operator 8.5+ modern Only suggest features available in the detected version. If the user asks about upgrading or newer features, mention what becomes available at each version. When to Apply Reference these guidelines when: Writing or reviewing PHP code Implementing classes and interfaces Using PHP 8.x modern features Ensuring type safety Following PSR standards Applying design patterns Rule Categories by Priority Priority Category Impact Prefix Rules 1 Type System CRITICAL type 9 2 Modern PHP Features CRITICAL modern 16 3 PSR Standards HIGH psr 6 4 SOLID Principles HIGH solid 5 5 Error Handling HIGH error 5 6 Performance MEDIUM perf 5 7 Security CRITICAL sec 5 Quick Reference 1. Type System (CRITICAL) — 9 rules type strict mode Declare strict types in every file type return types Always declare return types type parameter types Type all parameters type property types Type class properties type union types Use union types effectively type intersection types Use intersection types type nullable types Handle nullable types properly type void never Use void/never for appropriate return types type mixed avoid Avoid mixed type when possible 2. Modern PHP Features (CRITICAL) — 16 rules 8.0+: modern constructor promotion Constructor property promotion modern match expression Match over switch modern named arguments Named arguments for clarity modern nullsafe operator Nullsafe operator (? ) modern attributes Attributes for metadata 8.1+: modern enums Enums instead of constants modern enums methods Enums with methods and interfaces modern readonly properties Readonly for immutable data modern first class callables First class callable syntax modern arrow functions Arrow functions (7.4+, pairs well with 8.1 features) 8.2+: modern readonly classes Readonly classes 8.3+: modern typed constants Typed class constants ( const string NAME = 'foo' ) modern override attribute [\Override] to catch parent method typos 8.4+: modern property hooks Property hooks replacing getters/setters modern asymmetric visibility public private(set) for controlled access 8.5+: modern pipe operator Pipe operator ( ) for functional chaining 3. PSR Standards (HIGH) — 6 rules psr 4 autoloading Follow PSR 4 autoloading psr 12 coding style Follow PSR 12 coding style psr naming classes Class naming conventions psr naming methods Method naming conventions psr file structure One class per file psr namespace usage Proper namespace usage 4. SOLID Principles (HIGH) — 5 rules solid srp Single Responsibility: one reason to change solid ocp Open/Closed: extend, don't modify solid lsp Liskov Substitution: subtypes must be substitutable solid isp Interface Segregation: small, focused interfaces solid dip Dependency Inversion: depend on abstractions 5. Error Handling (HIGH) — 5 rules error custom exceptions Create specific exceptions for different errors error exception hierarchy Organize exceptions into meaningful hierarchy error try catch specific Catch specific exceptions, not generic \Exception error finally cleanup Use finally for guaranteed resource cleanup error never suppress Never use @ error suppression operator 6. Performance (MEDIUM) — 5 rules perf avoid globals Avoid global variables, use dependency injection perf lazy loading Defer expensive operations until needed perf array functions Use native array functions over manual loops perf string functions Use native string functions over regex perf generators Use generators for large datasets 7. Security (CRITICAL) — 5 rules sec input validation Validate and sanitize all external input sec output escaping Escape output based on context (HTML, JS, URL) sec password hashing Use password hash/verify, never MD5/SHA1 sec sql prepared Use prepared statements for all SQL queries sec file uploads Validate file type, size, name; store outside web root Essential Guidelines For detailed examples and explanations, see the rule files: [type strict mode.md](rules/type strict mode.md) Strict types declaration [modern constructor promotion.md](rules/modern constructor promotion.md) Constructor property promotion [modern enums.md](rules/modern enums.md) PHP 8.1+ enums with methods [solid srp.md](rules/solid srp.md) Single responsibility principle Key Patterns (Quick Reference) Output Format When auditing code, output findings in this format: Example: How to Use Read individual rule files for detailed explanations: