Wir werden mit einem Überblick über den Service -Container beginnen, gefolgt von einem umfassenden Leitfaden zum Erstellen von benutzerdefinierten Serviceanbietern und der Integration in Ihre Laravel -Anwendung. Wir werden auch die entscheidenden Methoden
und register
untersuchen. boot
Service -Container und Dienstleister verstehen
Der Laravel Service Container fungiert als zentrales Repository für Anwendungskomponenten, Verwaltung von Abhängigkeiten und Erleichterung der Abhängigkeitsinjektion. Wie in der offiziellen Dokumentation lautet es ein leistungsstarkes Instrument zur Verwaltung von Klassenabhängigkeiten und zur Durchführung von Abhängigkeitsinjektionen. Dies beseitigt die manuelle Instanziierung und reduziert die enge Kopplung in Ihrem Code.Betrachten Sie dieses Beispiel:
class SomeClass { public function __construct(FooBar $foobarObject) { // use $foobarObject object } }
automatisch aus dem Service -Container injiziert. FooBar
Erstellen eines benutzerdefinierten Dienstanbieters
Erstellen wir einen benutzerdefinierten Dienstanbieter. Erstellen Sie zunächst den Anbieter mit Artisan:
php artisan make:provider EnvatoCustom
. In der app/Providers/EnvatoCustomServiceProvider.php
-Methode binden Sie Klassen an den Container. Das register
-Array in providers
muss aktualisiert werden, um Ihren Anbieter zu registrieren: config/app.php
App\Providers\EnvatoCustomServiceProvider::class,
-Methode. boot
Die Methoden und boot
register
Real-World Beispiel: Authentifizierungsdienst
Erstellen wir einen Authentifizierungsdienst mit mehreren Adaptern (beispielsweise JSON und XML). Dies zeigt die Macht der Dienstleister.
app/Library/Services/Contracts/AuthenticationServiceInterface.php
<?php namespace App\Library\Services\Contracts; interface AuthenticationServiceInterface { public function authenticate($credentials); }
JsonAuthentication
): app/Library/Services/JsonAuthentication.php
<?php namespace App\Library\Services; use App\Library\Services\Contracts\AuthenticationServiceInterface; class JsonAuthentication implements AuthenticationServiceInterface { public function authenticate($jsonData) { // Parse $jsonData and authenticate... return 'JSON based Authentication'; } }
EnvatoCustomServiceProvider.php
ein
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Library\Services\JsonAuthentication; class EnvatoCustomServiceProvider extends ServiceProvider { public function register() { $this->app->bind('App\Library\Services\Contracts\AuthenticationServiceInterface', function ($app) { return new JsonAuthentication(); }); } public function boot() { // ... } }
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Library\Services\Contracts\AuthenticationServiceInterface; class AuthenticateController extends Controller { public function index(AuthenticationServiceInterface $authenticationServiceInstance) { // ... get $credentials from Request ... echo $authenticationServiceInstance->authenticate($credentials); } }
Die boot
-Methode wird häufig für Aufgaben wie die Registrierung von Ereignishörern oder für die Ansichtskomponisten verwendet. Zum Beispiel einen Ansichtskomponisten hinzufügen:
class SomeClass { public function __construct(FooBar $foobarObject) { // use $foobarObject object } }
oder Modellbindungen definieren:
php artisan make:provider EnvatoCustom
Schlussfolgerung
Dieser Artikel umfasste den Service-Container und die Dienstleister von Laravel und führte Sie durch das Erstellen und Registrieren von benutzerdefinierten Anbietern und den Demonstration praktischer Anwendungen mit einem realen Beispiel. Denken Sie daran, die offizielle Laravel -Dokumentation für weitere Details und fortschrittliche Techniken zu konsultieren.
Das obige ist der detaillierte Inhalt vonSo registrieren und verwenden Sie Laravel -Dienstleister. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!