Home / Packages / @ivangrynenko/php-drupal-development-standards

@ivangrynenko/php-drupal-development-standards

Standards for PHP and Drupal development globs: *.php, *.module, *.inc, *.install, *.theme

prpm install @ivangrynenko/php-drupal-development-standards
0 total downloads

📄 Full Prompt Content

---
description: Standards for PHP and Drupal development
globs: *.php, *.module, *.inc, *.install, *.theme
---
# Enhanced PHP and Drupal Development Standards

Ensures adherence to PHP 8.3+ features and Drupal development best practices for improved code quality, security, and maintainability.

<rule>
name: enhanced_php_drupal_development_standards
description: Enforce PHP 8.3+ and Drupal development standards
filters:
  - type: file_extension
    pattern: "\\.(php|module|inc|install|theme)$"
  - type: file_path
    pattern: "web/modules/custom/|web/themes/custom/"

actions:
  - type: enforce
    conditions:
      - pattern: "^(?!declare\\(strict_types=1\\);)"
        message: "Add 'declare(strict_types=1);' at the beginning of PHP files for type safety."

      - pattern: "class\\s+\\w+\\s*(?!\\{[^}]*readonly\\s+\\$)"
        message: "Consider using readonly properties where immutability is required for better code safety."

      - pattern: "public\\s+function\\s+\\w+\\([^)]*\\)\\s*(?!:)"
        message: "Add return type declarations for all methods to enhance type safety."

      - pattern: "extends\\s+\\w+\\s*\\{[^}]*public\\s+function\\s+\\w+\\([^)]*\\)\\s*(?!#\\[Override\\])"
        message: "Add #[Override] attribute for overridden methods for clear intent."

      - pattern: "\\$\\w+\\s*(?!:)"
        message: "Use typed properties with proper nullability to improve code readability and prevent errors."

      - pattern: "function\\s+hook_\\w+\\([^)]*\\)\\s*(?!:)"
        message: "Add type hints and return types for all hooks to leverage PHP's type system."

      - pattern: "new\\s+\\w+\\([^)]*\\)\\s*(?!;\\s*//\\s*@inject)"
        message: "Use proper dependency injection with services for better testability and modularity."

      - pattern: "extends\\s+FormBase\\s*\\{[^}]*validate"
        message: "Implement proper form validation in FormBase classes for security."

      - pattern: "(?<!\\bTRUE\\b)\\btrue\\b|(?<!\\bFALSE\\b)\\bfalse\\b|(?<!\\bNULL\\b)\\bnull\\b"
        message: "Use uppercase for TRUE, FALSE, and NULL constants for consistency."

      - pattern: "(?i)\\/\\/\\s[a-z]"
        message: "Ensure inline comments begin with a capital letter and end with a period for readability."

      - pattern: "\\$this->config\\('\\w+'\\)"
        message: "Use ConfigFactory for configuration management to ensure proper dependency injection."

  - type: suggest
    message: |
      **PHP/Drupal Development Best Practices:**
      - **File Structure:** Place module files in `web/modules/custom/[module_name]/` for organization.
      - **Module Files:** Ensure modules include .info.yml, .module, .libraries.yml, .services.yml where applicable.
      - **Dependencies:** Use hook_requirements() to manage external dependencies.
      - **Forms:** Use FormBase or ConfigFormBase for creating forms, always include CSRF protection.
      - **Caching:** Apply proper cache tags and contexts for performance optimization.
      - **Error Handling & Logging:** Implement robust error handling and logging using Drupal's mechanisms.
      - **Type Safety:** Leverage type safety in form methods and throughout your code.
      - **Dependency Injection:** Follow Drupal's dependency injection patterns for better maintainability.
      - **Service Container:** Use Drupal's service container to manage dependencies.
      - **Security:** Validate all user inputs, use Drupal's security practices like sanitization and escaping.
      - **Schema Updates:** Implement hook_update_N() for database schema changes.
      - **Translation:** Use Drupal's t() function for all user-facing strings.

  - type: validate
    conditions:
      - pattern: "web/modules/custom/[^/]+/\\.info\\.yml$"
        message: "Ensure each custom module has a required .info.yml file."

      - pattern: "web/modules/custom/[^/]+/\\.module$"
        message: "Ensure module has .module file if hooks are implemented."

      - pattern: "web/modules/custom/[^/]+/src/Form/\\w+Form\\.php$"
        message: "Place form classes in the Form directory for consistency."

      - pattern: "try\\s*\\{[^}]*\\}\\s*catch\\s*\\([^)]*\\)\\s*\\{\\s*\\}"
        message: "Implement proper exception handling in catch blocks for robustness."

metadata:
  priority: critical
  version: 1.1
</rule>

💡 Suggested Test Inputs

Loading suggested inputs...

🎯 Community Test Results

Loading results...

📦 Package Info

Format
cursor
Type
rule
Category
general
License
MIT

🏷️ Tags