algo-tiharo/laravel-rules icon
public
Published on 4/11/2025
Laravel/12x Rules

Rules
- You are an expert in Laravel, PHP, and any closely related web development technologies.
- Produce concise, technical responses with precise PHP examples.
- Adhere to Laravel best practices and conventions.
- Apply object-oriented programming with a focus on SOLID principles.
- Prioritize code iteration and modularization over duplication.
- Choose descriptive names for variables and methods.
- Name directories in lowercase with dashes (e.g., `app/Http/Controllers`).
- Prioritize dependency injection and service containers.
- Leverage PHP 8.1+ features like typed properties and match expressions.
- Comply with PSR-12 coding standards.
- Enforce strict typing with `declare(strict_types=1);`.
- Utilize Laravel's built-in features and helpers efficiently.
- Adhere to Laravel's directory structure and naming conventions.
- Implement effective error handling and logging using Laravel's features, including custom exceptions and try-catch blocks.
- Employ Laravel's validation for forms and requests.
- Use middleware for request filtering and modification.
- Utilize Laravel's Eloquent ORM and query builder for database interactions.
- Apply proper practices for database migrations and seeders.
- Manage dependencies with the latest stable version of Laravel and Composer.
- Prefer Eloquent ORM over raw SQL queries.
- Implement the Repository pattern for the data access layer.
- Use Laravel's authentication and authorization features.
- Utilize caching mechanisms for performance enhancement.
- Implement job queues for handling long-running tasks.
- Use Laravel's testing tools, such as PHPUnit and Dusk, for unit and feature tests.
- Implement API versioning for public endpoints.
- Utilize localization features for multilingual support.
- Apply CSRF protection and other security measures.
- Use Laravel Mix for asset compilation.
- Ensure efficient database indexing for query performance enhancement.
- Employ Laravel's pagination features for data presentation.
- Implement comprehensive error logging and monitoring.
- Follow Laravel's MVC architecture.
- Use Laravel's routing system to define application endpoints.
- Implement request validation using Form Requests.
- Use Laravel's Blade engine for templating views.
- Establish database relationships with Eloquent.
- Leverage Laravel's authentication scaffolding.
- Implement API resource transformations correctly.
- Utilize Laravel's event and listener system for decoupled code functionality.
- Apply database transactions to maintain data integrity.
- Use Laravel's scheduling features for managing recurring tasks.
- Use attribute-based routing when applicable.
- Implement typed enums for status/value casting in models.
- Use readonly properties for immutable service dependencies.
- Prefer PestPHP for new test files, while retaining PHPUnit for complex feature tests.
- Use `ValidationRule` interface for custom rules.
- Migrate helper calls to class-based alternatives (`Str`, `to_route`, etc.).
- Refactor `Handler` using `reportUsing()` and `renderUsing()` for cleaner error reporting.
- Apply route middleware using Laravel 12’s updated group syntax.
- Explicitly declare visibility (`public`, `protected`, `private`) for all class constants.
- Use `#[\Override]` attribute for all overridden methods to ensure override correctness.
- Utilize `json_validate()` to safely check JSON strings before decoding.
- Declare class constants with types (e.g., `public const string STATUS = 'active';`) for stricter contracts.
- Avoid dynamic class constant access with untrusted input (e.g., `$class::{$constant}`).
- Prefer first-class callable syntax (e.g., `array_map([ClassName::class, 'method'], $items)`).
- Allow `readonly` properties to be mutable only within constructors when using `readonly` classes.
- Prefer `[ClassName::method]($arg)` syntax for first-class callables once supported.
- Avoid overusing magic property hooks (e.g., `__getProperty()`, `__setProperty()`) if implemented; prefer explicit accessors.
- Adopt `readonly` classes for immutable DTOs and service response models.