Maison > cadre php > Laravel > Développement Laravel : Comment accéder aux services en utilisant Laravel Facades ?

Développement Laravel : Comment accéder aux services en utilisant Laravel Facades ?

王林
Libérer: 2023-06-13 19:12:50
original
706 Les gens l'ont consulté

Laravel est un framework de développement d'applications Web PHP open source qui fournit une syntaxe élégante et des outils puissants pour vous aider à créer des applications Web efficaces, sécurisées et évolutives. Les façades de Laravel sont une fonctionnalité très utile qui vous permet d'accéder aux services du conteneur de services Laravel en utilisant une syntaxe simple. Dans cet article, nous explorerons comment utiliser Laravel Facades pour accéder aux services.

1. Qu'est-ce que le service ?

Dans Laravel, un service est un ensemble de toutes les fonctionnalités et composants nécessaires pour créer une application. Les services incluent les connexions à la base de données, les pilotes de cache, les services de messagerie, les services de file d'attente, etc. Le conteneur de services de Laravel est un outil qui rassemble ces services en un seul endroit et vous permet d'y accéder rapidement et facilement.

Chaque service est défini dans une classe et une instance est enregistrée dans le conteneur de services. Vous pouvez utiliser cette instance pour consommer le service. Dans Laravel, les façades offrent un moyen simple d'accéder aux services dans un conteneur de services.

2. Que sont les façades ?

Facades est un modèle de conception qui permet aux utilisateurs d'accéder facilement à un sous-système. Les façades dans Laravel sont un type spécial de classe qui vous permet d'accéder aux services dans le conteneur de services Laravel en utilisant une syntaxe simple.

Vous pouvez considérer les façades comme un moyen d'accéder aux services à l'aide d'une interface statique. Les façades fournissent une interface statique qui peut accéder aux services dans le conteneur de services. Lorsque vous utilisez une façade, Laravel gère toutes les dépendances et transmet les requêtes à la bonne instance.

Dans Laravel, chaque service a une classe d'apparence correspondante. Par exemple, si vous souhaitez utiliser le service de mise en cache de Laravel, vous pouvez utiliser la classe de façade Cache. Cette classe fournit une interface simple pour accéder au service de cache afin que vous puissiez facilement l'utiliser dans votre application.

3. Comment utiliser Façades pour accéder aux services ?

Voyons maintenant comment utiliser Façades pour accéder aux services. Disons que vous souhaitez utiliser le service de mise en cache Laravel. En plus de l'accès direct à l'aide du conteneur de services, vous pouvez également utiliser la classe de façade Cache. Voici un exemple de code :

use IlluminateSupportFacadesCache;
  
Route::get('/cache', function () {
    $value = Cache::get('key');
    if ($value) {
        return $value;
    }
    Cache::put('key', 'value', 60);
    return 'value';
});
Copier après la connexion

Dans le code, nous utilisons la classe IlluminateSupportFacadesCache pour créer une route nommée "cache". Dans le gestionnaire de route, nous utilisons la façade Cache pour accéder au service de cache. Tout d'abord, nous utilisons la méthode Cache::get() pour vérifier si la valeur dont nous avons besoin existe dans le cache. Si elle existe, nous renvoyons directement la valeur enregistrée dans le cache. Sinon, nous utilisons la méthode Cache::put() pour stocker la valeur dans le cache et la renvoyer.

Cet exemple montre comment utiliser Laravel Facades pour accéder aux services. En utilisant des classes de façade, nous pouvons facilement accéder au service de cache et n'avons pas besoin d'utiliser explicitement le conteneur de service pour obtenir l'instance de service.

4. Comment créer des Façades ?

En plus d'utiliser les façades intégrées de Laravel, vous pouvez également créer vos propres classes de façades. Créer vos propres classes de façade vous permet d'utiliser n'importe quelle classe comme façade, sans se limiter aux services fournis par Laravel par défaut.

Pour créer une classe de façade, vous devez créer une classe qui hérite d'IlluminateSupportFacadesFacade. Cette classe doit implémenter une méthode appelée getFacadeAccessor(), qui renvoie une chaîne représentant l'identifiant du service représenté par la classe façade dans le conteneur de services. Voici le code d'un exemple de classe d'apparence :

namespace AppFacades;
  
use IlluminateSupportFacadesFacade;
  
class MyServiceFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'my_service';
    }
}
Copier après la connexion

Dans cet exemple, nous créons une classe d'apparence appelée MyServiceFacade. Cette classe hérite d'IlluminateSupportFacadesFacade. La méthode getFacadeAccessor() renvoie une chaîne 'my_service', qui représente l'identifiant du service représenté par cette classe d'apparence dans le conteneur de services.

Pour utiliser cette classe d'apparence personnalisée, vous devez d'abord ajouter un fournisseur de services. Dans le fournisseur de services, vous devez ajouter l'instance de service au conteneur de services et indiquer au conteneur de services qu'il peut accéder au service via la classe d'apparence personnalisée. Voici le code d'un exemple de fournisseur de services :

namespace AppProviders;
  
use IlluminateSupportServiceProvider;
use AppServicesMyService;
use AppFacadesMyServiceFacade;
  
class MyServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind('my_service', function () {
            return new MyService();
        });
          
        $this->app->bind('MyServiceFacade', function () {
            return new MyServiceFacade();
        });
    }
}
Copier après la connexion

Dans ce fournisseur de services, nous avons ajouté une instance de service nommée "my_service" au conteneur de services et ajouté une instance de service nommée "Classe d'apparence personnalisée de MyServiceFacade". . De cette façon, nous pouvons utiliser la classe d’apparence personnalisée pour accéder au service. Voici un exemple de code permettant d'utiliser MyServiceFacade pour accéder aux services :

use AppFacadesMyServiceFacade;
  
Route::get('/my-service', function () {
    return MyServiceFacade::doSomething();
});
Copier après la connexion

Dans cet exemple, nous référençons la classe de façade personnalisée et utilisons son interface statique pour accéder au service nommé « my_service ».

Résumé :

Facades est un outil très pratique qui vous permet d'accéder à des services dans un conteneur de services en utilisant une syntaxe simple. Dans Laravel, vous pouvez utiliser les façades par défaut fournies ou créer vos propres classes de façades personnalisées. Mieux encore, quelle que soit la classe de façade que vous utilisez, vous bénéficiez des avantages de rendre les conteneurs de service plus faciles à utiliser et plus pratiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal