Skip to main content
Wenn Nutzer sich mit einer Anfrage an Sie wenden, möchten Sie in einheitlicher Form prüfen können, ob Ihr Paket aktiviert ist und welcher Treiber ausgewählt ist. Mit AboutCommand::add() fügen Sie der Ausgabe von php artisan about einen Abschnitt für Ihr Paket hinzu, ohne einen eigenen Befehl zu implementieren. Die offizielle Dokumentation enthält ein grundlegendes Registrierungsbeispiel. Diese Seite betrachtet zusätzlich die Implementierung in Laravel 13 und geht auf den Zeitpunkt der Datenerfassung, die JSON-Typen, Kollisionen von Abschnittsnamen und den Registrierungszustand in Tests ein.

Angezeigte Inhalte im Provider registrieren

Das folgende Beispiel setzt voraus, dass courier.enabled und courier.driver bereits als Paketkonfiguration registriert sind. Wie Sie Konfiguration registrieren, erfahren Sie unter Paketkonfiguration zusammenführen und cachen.
runningInConsole() ist eine Bedingung, die unnötige Registrierungen bei HTTP-Requests vermeidet. Sie erkennt nicht nur die Ausführung von about, die Registrierung erfolgt also auch bei anderen Artisan-Befehlen. Die Konfigurationsabfragen innerhalb der obigen Closure werden zum Zeitpunkt der Registrierung jedoch nicht ausgeführt.
Wählen Sie die angezeigten Einträge explizit aus. Geben Sie keine API-Schlüssel, Zugriffstoken, Verbindungs-URLs mit Zugangsdaten oder ganze Konfigurationsarrays aus. Auch die JSON-Ausgabe maskiert Geheimnisse nicht automatisch. Bitten Sie Nutzer bei Anfragen, nur den Abschnitt Ihres Pakets zu teilen und dessen Inhalt vor dem Teilen zu prüfen.

Registrierung und Auswertung zeitlich getrennt betrachten

In Laravel v13.35.0 erfasst add() die Daten nicht sofort, sondern fügt dem statischen $customDataResolvers eine Registrierungs-Closure hinzu. Bei der Ausführung von about werden die Anzeigedaten zusammengestellt und die registrierten Closures zum Abrufen der Daten ausgewertet. Wenn Sie Konfigurationswerte innerhalb der Closure abrufen, statt sie vorab außerhalb von add() zu lesen und in einem Array festzuschreiben, spiegelt die Ausgabe den Zustand zum Zeitpunkt der Befehlsausführung wider. Der Filter --only greift dagegen erst nach der Auswertung der Closures zum Datenabruf.
Auch wenn Sie wie hier nur einen Standardabschnitt angeben, wird die obige Closure für Acme Courier ausgewertet. Nicht angezeigt zu werden ist etwas anderes als nicht verarbeitet zu werden. Ermitteln Sie zusätzliche Informationen daher aus Konfigurationswerten oder leichtgewichtigem lokalem Zustand. Verbindungsprüfungen gegen externe APIs, Datenbankabfragen oder das Ändern von Dateien können sogar Befehle verlangsamen oder fehlschlagen lassen, die nur nicht zusammenhängende Abschnitte prüfen. Lagern Sie Verbindungsprüfungen und Reparaturen in eigene Artisan-Befehle aus.
Die Bedingung runningInConsole() allein garantiert nicht, dass boot() eines Deferred Service Providers ausgeführt wird. Wenn die Diagnoseinformationen immer registriert werden sollen, legen Sie die Registrierung in einen sofort geladenen Provider. Für Setups, bei denen nur die Service-Bindungen verzögert werden, siehe Deferred Service Provider.

CLI-Anzeige und JSON-Typen vereinbaren

Um nur die Informationen Ihres Pakets zu prüfen, geben Sie den Abschnittsnamen in kleingeschriebenem Snake Case an. Für Acme Courier ist das acme_courier.
Wenn im obigen Registrierungsbeispiel courier.enabled den Wert true und courier.driver den Wert log hat, sieht das JSON so aus:
In der CLI wird Enabled als ENABLED angezeigt. AboutCommand::format() ist ein Helfer, mit dem Sie console für die CLI und json für JSON angeben können. Das obige Beispiel gibt nur console an, daher liefert JSON den ursprünglichen booleschen Wert. Die Anzeigezeichenkette der CLI muss nicht in JSON übernommen werden. Wenn Sie wie im Beispiel Namen aus gewöhnlichen englischen Wörtern verwenden, die durch Leerzeichen getrennt sind, lassen sich Filter und JSON-Schlüssel leichter handhaben. Schlüssel, auf die automatisierte Prozesse zugreifen, können sich auch durch eine Änderung des Anzeigenamens ändern. Prüfen Sie daher bei jedem Release die Kompatibilität.

Abschnitte mit paketspezifischen Namen versehen

add() hängt Einträge an denselben Abschnitt an. Die Angabe eines gleichnamigen Abschnitts ersetzt nicht den gesamten zuvor registrierten Inhalt. Wählen Sie einen Namen wie Acme Courier, der sich von anderen Paketen unterscheidet, und ergänzen Sie die Laravel-Standardabschnitte Environment, Cache, Drivers und Storage nur, wenn es nötig ist. Wenn Sie im selben Abschnitt mehrfach einen Eintrag mit demselben Namen registrieren, können in der CLI mehrere Zeilen erhalten bleiben, während JSON sie unter demselben Schlüssel zusammenführt und der spätere Wert erhalten bleibt. Vermeiden Sie außerdem Namen, die zwar unterschiedlich geschrieben sind, nach der Umwandlung in Snake Case aber denselben Schlüssel ergeben. Bündeln Sie die Registrierung an einer Stelle und gestalten Sie die Einträge so, dass sie sowohl in der CLI als auch in JSON eindeutig sind.

Statischen Registrierungszustand in Tests behandeln

Beim Start von about werden die Anzeigedaten $data zurückgesetzt, die Registrierungsliste für zusätzliche Informationen $customDataResolvers bleibt jedoch erhalten. So können die Informationen jedes Mal aus denselben Registrierungen neu erfasst werden. Wird boot() eines Providers im selben PHP-Prozess wiederholt ausgeführt, können sich die Registrierungen jedoch anhäufen. AboutCommand::flushState() ist eine Methode, die die Registrierungen aller Pakete sowie die Anzeigedaten löscht. Rufen Sie sie nicht in einem produktiven Provider auf, um Duplikate Ihres eigenen Abschnitts zu vermeiden. Dabei gehen auch die Diagnoseinformationen anderer Pakete verloren. Wenn Sie die Anwendung in einer eigenen Testinfrastruktur neu aufbauen, legen Sie fest, wer für das Zurücksetzen des Zustands zwischen Tests verantwortlich ist. Falls Sie zurücksetzen, tun Sie dies vor dem Booten der betreffenden Provider und führen Sie danach alle nötigen Registrierungen durch. Prüfen Sie auch, ob Ihre bestehende Testinfrastruktur den Zustand bereits zurücksetzt.

Prüfpunkte vor dem Release

Prüfen Sie die folgenden Kombinationen mit Laravel-Pakete mit Orchestra Testbench testen und in einer echten Anwendung, die Ihr Paket nutzt.

Verwandte Seiten

Laravel-Paketentwicklung

Grundlagen zu Providern und der Registrierung von Ressourcen.

Paketkonfiguration zusammenführen und cachen

Zusammenspiel von Standardwerten, Überschreibungen durch Nutzer und Konfigurations-Cache.

Herangezogene Primärquellen

Zuletzt geändert am 11. Oktober 2026