AboutCommand::add() puoi aggiungere una sezione dedicata al pacchetto all’output di php artisan about senza implementare un comando apposito.
La documentazione ufficiale contiene un esempio di base della registrazione. Questa pagina esamina l’implementazione di Laravel 13 e approfondisce il momento in cui vengono raccolte le informazioni, i tipi JSON, le collisioni tra nomi di sezione e lo stato della registrazione nei test.
Registrare il contenuto da mostrare nel provider
L’esempio seguente presuppone checourier.enabled e courier.driver siano già registrati come configurazione del pacchetto. Per sapere come registrare la configurazione, consulta Merge e cache della configurazione dei pacchetti.
runningInConsole() è una condizione che evita registrazioni inutili durante le richieste HTTP. Non verifica solo l’esecuzione di about: la registrazione avviene anche con gli altri comandi Artisan. Tuttavia, la lettura della configurazione all’interno della closure qui sopra non viene eseguita al momento della registrazione.
Distinguere il momento della registrazione da quello della valutazione
In Laravelv13.35.0, add() non raccoglie i dati subito, ma aggiunge una closure di registrazione all’array statico $customDataResolvers. All’esecuzione di about vengono assemblati i dati da mostrare e valutate le closure di recupero dati registrate.
Leggere i valori di configurazione dentro la closure permette di riflettere lo stato al momento dell’esecuzione del comando, invece di leggerli in anticipo fuori da add() e fissarli in un array. D’altra parte, il filtro --only viene applicato dopo la valutazione delle closure di recupero dati.
Acme Courier qui sopra viene valutata. Non essere mostrato e non essere eseguito sono due cose diverse.
Per questo motivo, le informazioni aggiuntive vanno ricavate da valori di configurazione o da uno stato locale leggero. Se inserisci verifiche di connettività verso API esterne, query al database o modifiche di file, anche i comandi che consultano sezioni non correlate possono diventare lenti o fallire. Sposta verifiche di connettività e riparazioni in comandi Artisan dedicati.
Conciliare la visualizzazione CLI con i tipi JSON
Per vedere solo le informazioni del pacchetto, specifica il nome della sezione convertito in minuscolo e in snake case. PerAcme Courier il valore è acme_courier.
courier.enabled è true e courier.driver è log, il JSON ha la forma seguente.
Enabled viene mostrato come ENABLED. AboutCommand::format() è un helper che permette di specificare console per la CLI e json per il JSON. L’esempio qui sopra specifica solo console, quindi in JSON viene restituito il valore booleano originale. Non è necessario riutilizzare nel JSON la stringa mostrata in CLI.
Usare, come nell’esempio, nomi composti da normali parole inglesi separate da spazi rende più semplice gestire filtri e chiavi JSON. Le chiavi usate dai processi automatici possono cambiare anche modificando il nome visualizzato, quindi verifica la compatibilità a ogni rilascio.
Usare nomi di sezione specifici del pacchetto
add() aggiunge voci alla stessa sezione. Specificare una sezione con lo stesso nome non sostituisce l’intero contenuto registrato in precedenza.
Scegli un nome che si distingua dagli altri pacchetti, come Acme Courier, e limita le aggiunte alle sezioni standard di Laravel Environment, Cache, Drivers e Storage ai casi in cui sono necessarie.
Se registri più volte una voce con lo stesso nome nella stessa sezione, in CLI possono restare più righe, mentre in JSON vengono raggruppate sotto la stessa chiave e resta l’ultimo valore. Evita anche nomi che, pur scritti in modo diverso, diventano la stessa chiave dopo la conversione in snake case. Concentra la registrazione in un unico punto e progetta le voci in modo che siano univoche sia in CLI sia in JSON.
Gestire lo stato di registrazione statico nei test
All’inizio dell’esecuzione diabout i dati da mostrare $data vengono reinizializzati, ma l’elenco delle registrazioni di informazioni aggiuntive $customDataResolvers viene mantenuto. In questo modo le informazioni possono essere raccolte di nuovo ogni volta dalle stesse registrazioni, ma se il boot() del provider viene ripetuto nello stesso processo PHP le registrazioni possono accumularsi.
AboutCommand::flushState() è un metodo che cancella le registrazioni di tutti i pacchetti e i dati da mostrare. Non chiamarlo nel provider di produzione per evitare duplicati nella tua sezione: perderesti anche le informazioni diagnostiche degli altri pacchetti.
Se ricostruisci l’applicazione con una tua infrastruttura di test, stabilisci a chi spetta reinizializzare lo stato tra un test e l’altro. Se lo reinizializzi, fallo prima di avviare il provider interessato ed esegui poi tutte le registrazioni necessarie. Verifica anche se l’infrastruttura di test esistente reinizializza già lo stato.
Verifiche prima del rilascio
Verifica le seguenti combinazioni con Testare pacchetti Laravel con Orchestra Testbench e in un’applicazione reale che usa il pacchetto.Pagine correlate
Sviluppo di pacchetti Laravel
Ripassa le basi dei provider e della registrazione delle risorse.
Merge e cache della configurazione dei pacchetti
Scopri la relazione tra valori predefiniti, override degli utenti e cache della configurazione.
Fonti primarie consultate
- Documentazione ufficiale di Laravel: aggiungere informazioni ad about da un pacchetto
- Documentazione ufficiale di Laravel: about e —only
- Laravel Framework v13.35.0: AboutCommand: registrazione, ordine di valutazione, conversione delle chiavi,
format(),flushState(). - Laravel Framework v13.35.0: test di format
- Laravel Framework v13.35.0: test di integrazione dell’output JSON