Heim > Backend-Entwicklung > PHP-Tutorial > Erfahren Sie, wie Sie in Laravel benutzerdefinierte Fassaden erstellen

Erfahren Sie, wie Sie in Laravel benutzerdefinierte Fassaden erstellen

Karen Carpenter
Freigeben: 2025-03-06 02:37:12
Original
531 Leute haben es durchsucht

Laravel -Fassaden: Ein bequemer Zugang zu Dienstleistungen

Die Fassaden von

Laravel bieten eine optimierte Möglichkeit, mit Diensten zu interagieren und den Zugriff über eine benutzerfreundliche Oberfläche zu vereinfachen. Anfangs mag die Fassade -Accessor -Methode verwirrend erscheinen, aber das Verständnis ihrer Rolle verdeutlicht ihren Nutzen. Fassaden fungieren als bequeme Stellvertreter für die zugrunde liegenden Dienste innerhalb von Laravels Service -Container. Das Auffinden des mit einer bestimmten Fassade verknüpften Dienstes ist dank der getFacadeAccessor() -Methode unkompliziert. Diese Methode gibt den registrierten Dienstnamen zurück.

Zum Beispiel sieht der Accessor der DB -Fassade so aus:

// Illuminate\Support\Facades\DB;

protected static function getFacadeAccessor()
{
    return 'db';
}
Nach dem Login kopieren

Die String 'db' identifiziert den Dienst innerhalb des von der Fassade verwendeten Containers. Dies kann mit Tinker:

verifiziert werden

Learn how to create custom Facades in Laravel

Einige Fassaden können Methodenaufrufe an eine Managerklasse delegieren, was wiederum mit einer Makro- oder Datenbankverbindungsklasse auf niedrigerer Ebene interagiert:

public function __call($method, $parameters)
{
    if (static::hasMacro($method)) {
        return $this->macroCall($method, $parameters);
    }

    return $this->connection()->$method(...$parameters);
}
Nach dem Login kopieren

ohne eine angegebene Verbindung, die DatabaseManager standardmäßig zur konfigurierten Verbindung (z. B. sqlite im obigen Beispiel).

Die Laravel -Dokumentation enthält umfassende Details zur Fassadenfunktionalität und eine vollständige Liste der verfügbaren Fassaden.

Erstellen benutzerdefinierter Fassaden

Obwohl es für die Anwendungsentwicklung nicht ausschließlich notwendig ist, kann die Erstellung maßgefertigter Fassaden die Produktivität steigern, insbesondere für häufig verwendete Dienstleistungen. Dies ist besonders vorteilhaft, wenn Sie mit Helfern oder in einem dedizierten AppFacades -Namespace arbeiten. Dieser Ansatz gleicht die Flexibilität von Laravel mit etablierten Konventionen aus.

Um eine Fassade zu generieren, verwenden Sie den Handwerksanweis:

php artisan make:class App/Facades/Example
Nach dem Login kopieren

unter der Annahme, dass Sie einen Dienst AppExampleService im Dienstanbieter Ihrer Bewerbung definiert haben, wird die Fassade wie folgt implementiert:

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class Example extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'example_service';
    }
}
Nach dem Login kopieren

Alternativ können Sie alternativ, wenn kein Alias ​​definiert ist oder eine Zeichenfolge im Dienstanbieter verwendet, den voll qualifizierten Klassennamen direkt verwenden:

protected static function getFacadeAccessor()
{
    return \App\ExampleService::class;
}
Nach dem Login kopieren

Ein wesentlicher Vorteil von Fassaden ist die Leichtigkeit, den zugrunde liegenden Service während des Tests zu verspotten:

use App\Facades\Example;

Example::shouldReceive('getLatestPosts')
   ->with($after_date)
   ->andReturn($test_posts);
Nach dem Login kopieren

Ohne Fassade bietet Laravel Methoden wie partialMock() für ähnliche Verspottungsfunktionen:

$mock = $this->partialMock(MyApiService::class, function (MockInterface $mock) {
    $mock->shouldReceive('getLatestPosts')
        ->with($after_date)
        ->andReturn($test_posts);
});
Nach dem Login kopieren

letztendlich hängt die Wahl zwischen Fassaden und anderen Methoden von den individuellen Vorlieben und den Projektanforderungen ab. Für häufig zugegriffene Dienste kann eine Fassade jedoch die Lesbarkeit und Wartbarkeit der Code erheblich verbessern, ohne die Vorteile der Abhängigkeitsinjektion zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie in Laravel benutzerdefinierte Fassaden erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage