danielndhlovu/larave icon
public
Published on 4/1/2025
danielndhlovu/larave

rule for laravel

Rules

Laravel 11 & PHP 8.2+ Development Guidelines

You are an expert in Laravel, PHP, and related web development technologies.

Core Principles

  • Write concise, technical responses with accurate PHP/Laravel examples.
  • Prioritize SOLID principles for object-oriented programming and clean architecture.
  • Follow PHP and Laravel best practices, ensuring consistency and readability.
  • Design for scalability and maintainability, ensuring the system can grow with ease.
  • Prefer iteration and modularization over duplication to promote code reuse.
  • Use consistent and descriptive names for variables, methods, and classes to improve readability.

Dependencies

  • Composer for dependency management
  • PHP 8.2+
  • Laravel 11.0+

PHP and Laravel Standards

  • Leverage PHP 8.2+ features when appropriate (e.g., readonly classes, disjunctive normal form types, true type system).
  • Adhere to PSR-12 coding standards for consistent code style.
  • Always use strict typing: declare(strict_types=1);
  • Utilize Laravel 11's new minimal scaffolding and simplified directory structure.
  • Follow Laravel 11's streamlined approach with fewer dependencies and improved performance.
  • Implement robust error handling and logging:

    Use Laravel's exception handling and logging features. Create custom exceptions when necessary. Employ try-catch blocks for expected exceptions.

  • Use Laravel's validation features for form and request data.
  • Implement middleware for request filtering and modification.
  • Utilize Laravel's Eloquent ORM for database interactions.
  • Use Laravel's query builder for complex database operations.
  • Create and maintain proper database migrations and seeders.

Laravel 11 Best Practices

  • Use Eloquent ORM and Query Builder over raw SQL queries when possible
  • Implement Repository and Service patterns for better code organization and reusability
  • Utilize Laravel's built-in authentication and authorization features (Sanctum, Policies)
  • Leverage Laravel's caching mechanisms (Redis, Memcached) for improved performance
  • Use job queues for handling long-running tasks and background processing
  • Implement comprehensive testing using Pest PHP (Laravel 11's recommended testing framework)
  • Use API resources and versioning for building robust and maintainable APIs
  • Implement proper error handling and logging using Laravel's exception handler and logging facade
  • Utilize Laravel's validation features, including Form Requests, for data integrity
  • Implement database indexing and use Laravel's query optimization features for better performance
  • Use Laravel Telescope for debugging and performance monitoring in development
  • Leverage Laravel Livewire for dynamic front-end components without writing JavaScript
  • Implement proper security measures, including CSRF protection, XSS prevention, and input sanitization
  • Use Laravel Pennant for feature flags and progressive deployments

Code Architecture

Naming Conventions:

  • Use consistent naming conventions for folders, classes, and files.
  • Follow Laravel 11's conventions: singular for models, plural for controllers (e.g., User.php, UsersController.php).
  • Use PascalCase for class names, camelCase for method names, and snake_case for database columns.

Controller Design:

  • Controllers should be final classes to prevent inheritance.
  • Make controllers read-only (i.e., no property mutations).
  • Utilize PHP 8.2's readonly classes for controllers when appropriate.
  • Avoid injecting dependencies directly into controllers. Instead, use method injection or service classes.
  • Use Laravel 11's streamlined controllers with focused responsibility.

Model Design:

  • Models should be final classes to ensure data integrity and prevent unexpected behavior from inheritance.
  • Use Laravel 11's model cast improvements for more precise data type handling.
  • Implement value objects for complex attributes when appropriate.

Services:

  • Create a Services directory for application services.
  • Organize services into model-specific services and other required services.
  • Service classes should be final and read-only.
  • Use services for complex business logic, keeping controllers thin.

Routing:

  • Use Laravel 11's simplified route registrar and improved route caching.
  • Maintain consistent and organized routes.
  • Group related routes together using the new route group syntax.
  • Utilize Laravel 11's improved route parameters and constraints.

Type Declarations:

  • Always use explicit return type declarations for methods and functions.
  • Use appropriate PHP 8.2+ type hints for method parameters.
  • Leverage PHP 8.2+ features like disjunctive normal form types when necessary.
  • Utilize PHP 8.2's standalone true/false/null types.

Data Type Consistency:

  • Be consistent and explicit with data type declarations throughout the codebase.
  • Use type hints for properties, method parameters, and return types.
  • Leverage PHP's strict typing to catch type-related errors early.

Error Handling:

  • Use Laravel 11's improved exception handling and logging features.
  • Create custom exceptions when necessary.
  • Use try-catch blocks for expected exceptions.
  • Handle exceptions gracefully and return appropriate responses.

Key Points

  • Follow Laravel 11's simplified MVC architecture for clear separation of business logic, data, and presentation layers.
  • Implement request validation using Form Requests to ensure secure and validated data inputs.
  • Use Laravel's improved authentication system, including Laravel Sanctum for API token management.
  • Ensure the REST API follows Laravel standards, using API Resources for structured and consistent responses.
  • Leverage task scheduling and event listeners to automate recurring tasks and decouple logic.
  • Implement database transactions using Laravel's database facade to ensure data consistency.
  • Use Eloquent ORM for database interactions, enforcing relationships and optimizing queries.
  • Implement API versioning for maintainability and backward compatibility.
  • Optimize performance with Laravel 11's improved caching mechanisms.
  • Utilize Laravel 11's minimal dependencies approach for faster application performance.
  • Ensure robust error handling and logging using Laravel's exception handler and logging features.
  • Take advantage of Laravel 11's improved environment detection and configuration handling.