Facades bieten eine „statische“ Schnittstelle zu Klassen, die im Servicecontainer der Anwendung verfügbar sind.
Laravel verfügt über viele Fassaden, und Sie verwenden sie möglicherweise sogar, ohne es zu wissen!
statische Schnittstelle (Fassaden) von xpower
Voraussetzung 1: Wir haben eine Klasse, die an den Service-Container (xpower) gebunden wurde
Voraussetzung 2: Wir haben diese Klasse im Dienstanbieter registriert (Singleton-Methode unter Regisrer im Service-Container)
5. Als nächstes erstellen Sie eine xpower-Fassade, alle erben die Fassadenbasis Klasse. Die getFacadeAccessor-Methode muss implementiert sein. Es wird eine Zeichenfolge zurückgegeben, bei der es sich tatsächlich um den Namen des registrierten Bindungs-Singletons (Singleton-Methode) des Dienstanbieters handelt. Sie können diesen Namen beiläufig schreiben, hier ist er xpower
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class XP extends Facade { protected static function getFacadeAccessor() { return 'xpower'; } }
6 Dann müssen Sie den Fassadenkategorienamen in der Konfigurationsdatei config/app.php registrieren:
'aliases' => [ ...//其他门面类别名映射 'XP' => App\Facades\XP::class, ],
Zu diesem Zeitpunkt können wir XP::activate direkt verwenden, um xpower-Superkräfte zu aktivieren
die Einführung von AppFacadesXP nutzen. Sonst kann es nicht gefunden werden.
Analyse:
1. Die Zeichenfolge xpower wurde ebenfalls gebunden und im Container registriert und gibt dann die Xpower-Dienstinstanz zurück
3. ::activate ruft tatsächlich die __callstatic-Methode in der Basisklassenfassade auf und wird dann auf diese Weise in ->show() konvertiert.