Skip to main content

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