AboutCommand::add() voeg je een sectie voor je package toe aan de uitvoer van php artisan about, zonder een apart command te implementeren.
De officiële documentatie bevat een basisvoorbeeld van de registratie. Deze pagina bekijkt ook de implementatie van Laravel 13 en gaat dieper in op het moment waarop informatie wordt verzameld, de JSON-types, botsende sectienamen en de registratiestatus in tests.
De getoonde inhoud registreren in de provider
Het volgende voorbeeld gaat ervan uit datcourier.enabled en courier.driver al als packageconfiguratie zijn geregistreerd. Hoe je configuratie registreert, lees je in Packageconfiguratie samenvoegen en cachen.
runningInConsole() is een voorwaarde die onnodige registratie bij HTTP-requests voorkomt. Het is geen voorwaarde die alleen de uitvoering van about detecteert: de registratie vindt ook plaats bij andere Artisan-commands. Het ophalen van de configuratie binnen de closure hierboven wordt echter niet uitgevoerd op het moment van registratie.
Registratie en evaluatie als aparte momenten zien
In Laravelv13.35.0 verzamelt add() de gegevens niet direct, maar voegt een registratieclosure toe aan de statische $customDataResolvers. Bij het uitvoeren van about worden de weer te geven gegevens samengesteld en worden de geregistreerde closures voor het ophalen van gegevens geëvalueerd.
Door configuratiewaarden binnen de closure op te halen, weerspiegel je de status op het moment dat het command wordt uitgevoerd, in plaats van ze vooraf buiten add() in te lezen en in een array vast te leggen. Het filter --only wordt daarentegen pas na de evaluatie van de closures voor het ophalen van gegevens toegepast.
Acme Courier hierboven geëvalueerd. Niet getoond worden is iets anders dan niet uitgevoerd worden.
Haal toegevoegde informatie daarom uit configuratiewaarden of lichte lokale status. Als je er connectiviteitscontroles naar externe API’s, databasequery’s of het herschrijven van bestanden in stopt, kan zelfs een command dat een ongerelateerde sectie bekijkt traag worden of mislukken. Verplaats connectiviteitscontroles en reparaties naar aparte Artisan-commands.
CLI-weergave en JSON-types combineren
Wil je alleen de informatie van het package bekijken, geef dan de sectienaam op in kleine letters en in snake case. VoorAcme Courier is dat acme_courier.
courier.enabled true is en courier.driver log.
Enabled weergegeven als ENABLED. AboutCommand::format() is een helper waarmee je console voor de CLI en json voor JSON kunt opgeven. Het voorbeeld hierboven geeft alleen console op, dus in JSON wordt de oorspronkelijke booleaanse waarde teruggegeven. Je hoeft de weergavetekst van de CLI niet ongewijzigd in JSON te hergebruiken.
Gebruik je zoals in het voorbeeld namen die bestaan uit gewone Engelse woorden gescheiden door spaties, dan zijn filters en JSON-sleutels makkelijker te hanteren. Sleutels waar geautomatiseerde processen op vertrouwen, kunnen ook veranderen als je de weergavenaam aanpast. Controleer de compatibiliteit dus bij elke release.
Geef secties een naam die specifiek is voor je package
add() voegt items toe aan dezelfde sectie. Een sectie met dezelfde naam opgeven vervangt dus niet de volledige eerder geregistreerde inhoud.
Kies een naam die zich onderscheidt van andere packages, zoals Acme Courier, en beperk toevoegingen aan de standaardsecties van Laravel Environment, Cache, Drivers en Storage tot gevallen waarin dat echt nodig is.
Registreer je in dezelfde sectie meerdere keren een item met dezelfde naam, dan kunnen in de CLI meerdere regels overblijven, terwijl ze in JSON onder dezelfde sleutel worden samengevoegd en de laatste waarde overblijft. Vermijd ook namen die anders geschreven zijn maar na omzetting naar snake case dezelfde sleutel opleveren. Houd de registratie op één plek en ontwerp items zo dat ze zowel in de CLI als in JSON uniek zijn.
Statische registratiestatus in tests
Aan het begin van de uitvoering vanabout worden de weergavegegevens $data opnieuw geïnitialiseerd, maar de lijst met registraties voor toegevoegde informatie, $customDataResolvers, blijft behouden. Zo kan de informatie telkens opnieuw uit dezelfde registraties worden verzameld, maar als de boot() van de provider binnen hetzelfde PHP-proces herhaaldelijk wordt uitgevoerd, kunnen registraties zich opstapelen.
AboutCommand::flushState() is een methode die de registraties van alle packages en de weergavegegevens wist. Roep deze niet aan in een productieprovider om dubbele items in je eigen sectie te voorkomen: daarmee gaat ook de diagnostische informatie van andere packages verloren.
Bouw je de applicatie opnieuw op met je eigen testinfrastructuur, leg dan vast wie verantwoordelijk is voor het resetten van de status tussen tests. Reset je de status, doe dat dan vóórdat de betreffende provider wordt gestart en voer daarna alle benodigde registraties uit. Controleer ook of je bestaande testinfrastructuur de status al reset.
Controlepunten vóór een release
Controleer de volgende combinaties met Laravel-packages testen met Orchestra Testbench en in een echte applicatie die het package gebruikt.Gerelateerde pagina’s
Laravel-packages ontwikkelen
De basis van providers en het registreren van resources.
Packageconfiguratie samenvoegen en cachen
De relatie tussen standaardwaarden, overschrijvingen door gebruikers en de configuratiecache.
Geraadpleegde primaire bronnen
- Officiële Laravel-documentatie: informatie toevoegen aan about vanuit een package
- Officiële Laravel-documentatie: about en —only
- Laravel Framework v13.35.0: AboutCommand: registratie, evaluatievolgorde, sleutelconversie,
format(),flushState(). - Laravel Framework v13.35.0: tests voor format
- Laravel Framework v13.35.0: integratietests voor JSON-uitvoer