Heim > Backend-Entwicklung > PHP-Tutorial > So registrieren und verwenden Sie Laravel -Dienstleister

So registrieren und verwenden Sie Laravel -Dienstleister

Joseph Gordon-Levitt
Freigeben: 2025-03-07 01:18:09
Original
685 Leute haben es durchsucht

How to Register and Use Laravel Service Providers

Der Service -Container und die Dienstleister von Laravel von Laravel sind für seine Architektur von grundlegender Bedeutung. In diesem Artikel werden Servicecontainer untersucht, die Erstellung, Registrierung und Registrierung von Dienstleistungen für den Service anhand von Beispielen mit Beispielen belegt.

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
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Hier wird

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
Nach dem Login kopieren
Nach dem Login kopieren
Dies schafft

. 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,
Nach dem Login kopieren
Dies registriert den Anbieter, ist aber derzeit leer. Die nächsten Abschnitte demonstrieren die Funktionalität der

-Methode. boot

Die Methoden und boot register

Die Laravel -Dokumentation betont, dass Bindungsklassen nicht erforderlich sind, wenn sie nicht von Schnittstellen abhängen. Der Container kann diese mithilfe von Reflexion auflösen. Bindungsschnittstellen an Implementierungen sind jedoch für die Flexibilität von Vorteil.

Real-World Beispiel: Authentifizierungsdienst

Erstellen wir einen Authentifizierungsdienst mit mehreren Adaptern (beispielsweise JSON und XML). Dies zeigt die Macht der Dienstleister.

    Erstellen Sie eine Schnittstelle:
  1. : app/Library/Services/Contracts/AuthenticationServiceInterface.php
<?php
namespace App\Library\Services\Contracts;

interface AuthenticationServiceInterface {
    public function authenticate($credentials);
}
Nach dem Login kopieren
    konkrete Implementierungen erstellen (z. B.
  1. in 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';
    }
}
Nach dem Login kopieren
    Binden Sie die Schnittstelle in
  1. : 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() {
        // ...
    }
}
Nach dem Login kopieren
    Aktualisieren Sie Ihren Controller, um die Schnittstelle zu verwenden:
<?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);
    }
}
Nach dem Login kopieren
Denken Sie daran, Ihre Anwendungs ​​-Caches nach diesen Änderungen zu löschen.

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
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

oder Modellbindungen definieren:

php artisan make:provider EnvatoCustom
Nach dem Login kopieren
Nach dem Login kopieren

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!

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