Panoramica
Questa sezione tratta l’implementazione interna di Laravel che non si trova nella documentazione ufficiale e argomenti avanzati dedicati allo sviluppo di pacchetti. Analizzando il codice sorgente, spiega design pattern pratici e come estendere il framework.Sviluppo di pacchetti
Sviluppo di pacchetti Laravel
Dallo sviluppo di pacchetti incentrato sui service provider alla pubblicazione di configurazioni, viste e migrazioni.
Testare pacchetti Laravel con Orchestra Testbench
Costruisci un ambiente di test per i tuoi pacchetti con Orchestra Testbench e verifica service provider, facade e database.
Sviluppare pacchetti con Testbench Workbench
Crea un ambiente di verifica simile a un’applicazione reale, con rotte, migrazioni e avvio dei servizi.
Gestire la compatibilità tra versioni dei pacchetti
Strategie di manutenzione dei pacchetti per gli aggiornamenti di Laravel e PHP e configurazione della test matrix di GitHub Actions.
GeneratorCommand — implementare comandi make: personalizzati
Come implementare comandi
make: specifici del pacchetto estendendo GeneratorCommand.Merge e cache della configurazione dei pacchetti
Comprendi la differenza tra merge superficiale e sostituzione ricorsiva, e mantieni la configurazione tenendo conto dei file pubblicati e della cache della configurazione.
Pubblicazione e aggiornamento delle migrazioni di un pacchetto
La differenza tra pubblicazione e caricamento diretto, i rischi della modifica del timestamp e della ripubblicazione, e le modifiche allo schema per gli utenti esistenti.
Sovrascrivere e aggiornare le view di un pacchetto
L’ordine di ricerca delle view, la compatibilità dei template pubblicati e una procedura di aggiornamento che tiene conto della cache di Blade.
Registrazione e cache delle route di un pacchetto
La separazione tra middleware e nomi e il rapporto tra le modifiche alla configurazione e la ricreazione della cache delle route.
Cache dei pacchetti e integrazione con optimize
Spiega le chiavi di registrazione dei task personalizzati, le esclusioni, l’ordine di esecuzione e la gestione degli errori.
Asset pubblici e aggiornamento di un pacchetto
Spiega la distribuzione di JavaScript e CSS, l’ambito di selezione dei tag, la sovrascrittura e la ripubblicazione durante gli aggiornamenti di Composer.
Sovrascrittura e aggiornamento delle traduzioni di un pacchetto
Spiega la sovrascrittura parziale delle traduzioni PHP, le chiavi condivise delle traduzioni JSON e come aggiornare senza rompere le traduzioni già pubblicate.
Hook di risoluzione dei servizi nei pacchetti
Spiega la configurazione differita con callAfterResolving(), l’applicazione ai servizi già risolti e le cautele sull’idempotenza.
Registrazione e cache dei listener di eventi di un pacchetto
Spiega la differenza tra registrazione esplicita e rilevamento automatico, come evitare la doppia registrazione, cosa include event:cache e la verifica durante gli aggiornamenti.
Progettare il ciclo di vita dei servizi di un pacchetto
Spiega l’implementazione interna di scoped, le dipendenze conservate dai singleton e l’isolamento dello stato nei worker di lunga durata.
Estensioni Blade di un pacchetto e cache di compilazione
Spiega quando vengono eseguite le direttive personalizzate e le istruzioni condizionali, e come gestire la cache durante gli aggiornamenti.
Interno del framework
Struttura dell'applicazione da Laravel 11
Panoramica completa dello Slim Application Skeleton e implementazione interna da Application::configure() ad ApplicationBuilder.
Trait Macroable
Meccanismo e pattern di utilizzo del trait Macroable per aggiungere metodi personalizzati alle classi esistenti di Laravel.
Trait Conditionable
Implementazione interna dei metodi when()/unless() e pattern di utilizzo per progettare API fluent.
Illuminate\Support\Manager — anatomia del sistema di driver
La classe centrale del sistema di driver in uso da Laravel 4.0. Dalla registrazione di driver personalizzati a MultipleInstanceManager.
Pattern Pipeline
Il meccanismo della classe Illuminate\Pipeline\Pipeline e il pattern per comporre più step di elaborazione a catena.
Trait InteractsWithData
Progettazione del trait per implementare API di accesso ai dati in classi proprie durante lo sviluppo di pacchetti.
Helper tap() e trait Tappable
Utilizzo e pattern di implementazione dell’helper tap() di Laravel e del trait Tappable.
Attributi PHP
Come utilizzare gli attributi PHP introdotti e potenziati in Laravel 13 per configurare in modo dichiarativo job e modelli.
Implementazione interna dell'helper once()
Il meccanismo di cache basato su WeakMap delle classi Once e Onceable e la sua applicazione in PreventsCircularRecursion di Eloquent.
Approfondimenti Eloquent
Cast personalizzati di Eloquent
Cast personalizzati che implementano l’interfaccia CastsAttributes. Presenta anche il pattern Value Object, i cast inbound e Castables.
Eloquent Observers ed eventi del modello
Il meccanismo degli eventi emessi dai modelli Eloquent e la gestione centralizzata tramite classi Observer.
Scope di Eloquent
Meccanismo di scope locali e globali. Dall’implementazione interna di SoftDeletingScope ai casi d’uso pratici.
Collection Deep Dive
Illustra l’implementazione delle Laravel Collection dal punto di vista di storia, struttura delle classi, generics in PHPDoc e come leggerne il codice.
Higher-order messages delle collection
Meccanismo e utilizzo pratico degli higher-order messages delle collection.
MCP e AI
Creare un server MCP con Laravel
Costruisci un server MCP pronto per la produzione con il pacchetto laravel/mcp. Dall’implementazione di tool, risorse e prompt all’autenticazione.
Creare un provider personalizzato per l'AI SDK
Analizza il codice sorgente del Laravel AI SDK e implementa un provider personalizzato per servizi AI non supportati di default.
Creare un agente personalizzato per Boost
Approfondisci l’architettura di estensione di Laravel Boost e crea un agente personalizzato.
Autenticazione, validazione e altro
Implementare un guard di autenticazione personalizzato
Come creare un guard di autenticazione personalizzato implementando le interfacce Guard e StatefulGuard, spiegato a livello di codice sorgente.
Regole di validazione personalizzate
Come estendere la validazione con oggetti Rule e closure, con un’analisi anche dell’implementazione interna.
Personalizzare il rate limiting
Approfondisci il facade RateLimiter e implementa un rate limiting personalizzato per utente, per piano o per indirizzo IP.
Test avanzati con Pest
Dall’Expectation API ai dataset, dai fake a Mockery, una guida sistematica all’uso avanzato di Pest.