Descripción general
Esta sección aborda la implementación interna de Laravel que no se explica en la documentación oficial, así como temas avanzados específicos para el desarrollo de paquetes. Leyendo el código fuente, se explican patrones de diseño prácticos y métodos de extensión.Desarrollo de paquetes
Desarrollo de paquetes Laravel
Cubre desde los fundamentos del desarrollo de paquetes centrado en los service providers hasta la publicación de configuración, vistas y migraciones.
Probar paquetes Laravel con Orchestra Testbench
Configura un entorno de pruebas para tu paquete con Orchestra Testbench y verifica service providers, facades y la base de datos.
Desarrollar paquetes con Testbench Workbench
Crea un entorno de verificación cercano al de una aplicación real y construye un flujo de desarrollo con rutas, migraciones y arranque de servicios.
Gestión de la compatibilidad de versiones de paquetes
Estrategias de mantenimiento de paquetes para adaptarse a nuevas versiones de Laravel y PHP, y configuración de la matriz de pruebas de GitHub Actions.
GeneratorCommand — implementación de comandos make: personalizados
Aprende a implementar comandos
make: propios de tu paquete extendiendo GeneratorCommand.Fusión y caché de la configuración de paquetes
Entiende la diferencia entre la fusión superficial y el reemplazo recursivo, y mantén la configuración teniendo en cuenta los archivos publicados y la caché de configuración.
Publicación y actualización de migraciones de paquetes
Explica la diferencia entre publicar y cargar directamente, los riesgos de cambiar la fecha y republicar, y cómo aplicar cambios de esquema a los usuarios existentes.
Sobrescritura y actualización de vistas de paquetes
Explica el orden de búsqueda de las vistas, la compatibilidad de las plantillas publicadas y un procedimiento de actualización que tiene en cuenta la caché de Blade.
Registro de rutas y caché en paquetes
Explica la separación de middleware y nombres, y la relación entre los cambios de configuración y la regeneración de la caché de rutas.
Caché de paquetes e integración con optimize
Explica la clave de registro de tareas propias, las exclusiones, el orden de ejecución y el manejo de fallos.
Assets públicos de paquetes y su actualización
Explica la distribución de JavaScript y CSS, el alcance de la selección por etiquetas, la sobrescritura y la republicación al actualizar con Composer.
Sobrescritura y actualización de traducciones de paquetes
Explica la sobrescritura parcial de traducciones PHP, las claves compartidas de las traducciones JSON y cómo actualizar sin romper las traducciones ya publicadas.
Hooks de resolución de servicios en paquetes
Explica la configuración diferida con callAfterResolving(), su aplicación a servicios ya resueltos y las precauciones sobre idempotencia.
Registro y caché de listeners de eventos en paquetes
Explica la diferencia entre el registro explícito y el descubrimiento automático, cómo evitar el doble registro, qué incluye event:cache y cómo verificarlo al actualizar.
Diseño del ciclo de vida de los servicios de paquetes
Explica la implementación interna de scoped, las dependencias que retiene un singleton y el aislamiento del estado en workers de larga duración.
Extensiones de Blade en paquetes y caché de compilación
Explica cuándo se ejecutan las directivas y condicionales propios, y cómo gestionar la caché al actualizar.
Interior del framework
Estructura de aplicación en Laravel 11 y posteriores
Presenta el Slim Application Skeleton en su totalidad y la implementación interna desde Application::configure() hasta ApplicationBuilder.
Trait Macroable
Cómo funciona el trait Macroable para añadir métodos propios a clases existentes de Laravel y patrones de uso.
Trait Conditionable
Implementación interna de los métodos when()/unless() y patrones para diseñar APIs fluidas.
Illuminate\Support\Manager — anatomía del sistema de drivers
La clase central del sistema de drivers heredado desde Laravel 4.0. Desde cómo registrar drivers personalizados hasta MultipleInstanceManager.
Patrón Pipeline
Cómo funciona la clase Illuminate\Pipeline\Pipeline y el patrón para encadenar varios pasos de procesamiento.
Trait InteractsWithData
Diseño del trait para implementar una API de acceso a datos en tus propias clases durante el desarrollo de paquetes.
Helper tap() y trait Tappable
Uso del helper tap() de Laravel y del trait Tappable, junto con patrones de implementación.
Atributos de PHP
Cómo usar los atributos de PHP introducidos y reforzados en Laravel 13 para declarar configuración de jobs y modelos de forma declarativa.
Implementación interna del helper once()
Cómo funciona la caché con WeakMap de las clases Once y Onceable, y su aplicación en PreventsCircularRecursion de Eloquent.
Eloquent a fondo
Casts personalizados de Eloquent
Casts personalizados implementando la interfaz CastsAttributes. Presenta también el patrón Value Object, los casts entrantes y los Castables.
Observers de Eloquent y eventos del modelo
Cómo funcionan los eventos que disparan los modelos Eloquent y cómo centralizar su gestión mediante clases Observer.
Scopes de Eloquent
Cómo funcionan los scopes locales y globales. Desde la implementación interna de SoftDeletingScope hasta casos de uso prácticos.
Collection Deep Dive
Explica la implementación de Laravel Collection desde la perspectiva de su historia, estructura de clases, Generics de PHPDoc y cómo leer su código.
Mensajes de orden superior en colecciones
Cómo funcionan los mensajes de orden superior (Higher-order Messages) de las colecciones y cómo utilizarlos en la práctica.
MCP y IA
Crear un servidor MCP con Laravel
Construye un servidor MCP listo para producción con el paquete laravel/mcp. Desde la implementación de herramientas, recursos y prompts hasta la autenticación.
Crear un proveedor personalizado del AI SDK
Lee el código fuente de Laravel AI SDK e implementa un proveedor personalizado para servicios de IA no cubiertos de serie.
Crear un agente personalizado de Boost
Profundiza en la arquitectura de extensión de Laravel Boost y aprende a crear agentes personalizados.
Autenticación, validación y otros
Implementación de un guard de autenticación personalizado
Cómo crear guards de autenticación personalizados implementando las interfaces Guard y StatefulGuard, explicado a nivel de código fuente.
Reglas de validación personalizadas
Cómo extender la validación con objetos de regla o closures, profundizando también en la implementación interna.
Personalización de la limitación de velocidad
Profundiza en la facade RateLimiter e implementa rate limits personalizados por usuario, por plan y por dirección IP.
Pruebas avanzadas con Pest
Explicación sistemática del uso avanzado de Pest: Expectation API, datasets, fakes y Mockery.