メインコンテンツへスキップ

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 de comandos Artisan de paquetes y resolución de dependencias

Explica la diferencia entre registro, instanciación y ejecución, y cómo aislar efectos secundarios inyectando dependencias en handle().

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.

Registro y alcance del middleware de paquetes

Explica cómo separar el registro de alias de su aplicación, evitar sobrescribir grupos y verificar con la caché activa.

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.

Registro y nueva resolución de drivers de Storage en paquetes

Explica el registro de la lógica de creación, la retención y nueva resolución de discos, y la verificación necesaria además de fake.

Canales de notificación personalizados en paquetes y verificación de la entrega

Explica la resolución de canales por nombre de clase, el enrutamiento de destinatarios, el procesamiento en cola y las pruebas de entrega real.

Etiquetas del contenedor en paquetes y agregación de plugins

Explica la resolución diferida de tagged(), la conversión a array de giveTagged() y las precauciones sobre el registro duplicado y el ciclo de vida.

Cliente HTTP y pruebas en paquetes

Explica el uso de la Factory compartida, la separación del estado por solicitud y la verificación de solicitudes y excepciones con fake.

Extensión y nueva resolución de canales de log en paquetes

Explica custom y via, el registro de drivers propios y la verificación teniendo en cuenta los canales retenidos y el fallback.

Stores de caché personalizados y contratos en paquetes

Explica el momento de registro, el reparto de funciones entre Store y Repository, la conversión del TTL y el alcance de funciones como los locks.

Registro y pruebas de transportes de correo en paquetes

Explica la separación entre el nombre del mailer y el del transport, la nueva resolución tras cambiar la configuración y los flujos de envío que fake no permite comprobar.

Atributos contextuales y resolución de dependencias en paquetes

Explica la inyección de configuración con atributos propios, la prioridad de resolución, la diferencia entre make y call, y la vida útil de los servicios ya creados.

Registro y mantenimiento de tareas programadas en paquetes

Explica la activación explícita, el registro tras resolver el Schedule, el registro duplicado y los nombres de bloqueo, y la verificación al cambiar la configuración.

Drivers de sesión personalizados en paquetes

Explica el contrato de almacenamiento del handler, la selección explícita, el TTL y el formato de almacenamiento, y la retención y verificación de Stores ya creados.

Extensión de conexiones de base de datos en paquetes

Explica la extensión por nombre de conexión y de driver, la prioridad de creación, y la retención y recreación de conexiones.

Registro dinámico de relaciones en paquetes

Añade relaciones sin modificar los modelos y verifica las claves explícitas, las colisiones de nombres, la herencia y la vida útil del estado de registro.

Registro de reglas de validación de cadena en paquetes

Explica el registro en la Factory, los mensajes y traducciones, la diferencia entre reglas Implicit y Dependent, y la vida útil de los Validators ya creados.

Macros de respuesta y contratos HTTP en paquetes

Explica el registro en la Factory, la vinculación de la Closure, las colisiones de nombres y la vida útil del estado, y la compatibilidad de las respuestas JSON.

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.

afterQuery de Eloquent y el contrato de los resultados

Procesamiento de resultados en scopes locales y diferencias de tipos, número de llamadas y detección de páginas según el método de obtención.

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.

Middleware de agentes en Laravel AI SDK

Explica el orden de ejecución por paso, el procesamiento tras la respuesta del modelo y la detención según los tokens acumulados.

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.
最終更新日 2026年11月8日