Maison >cadre php >Laravel >Quoi écrire pour le service Laravel

Quoi écrire pour le service Laravel

WBOY
WBOYoriginal
2023-05-29 09:23:37932parcourir

Avec le développement continu de Laravel, le service est devenu un composant important du framework Laravel. Quel est le rôle du Service ? Comment utiliser les services dans Laravel ? Dans cet article, nous présenterons en détail les connaissances pertinentes du service Laravel.

1. Le rôle du Service

Service fait référence à la logique métier utilisée dans le projet, comme certaines logiques métier liées au paiement, à la gestion des employés, à l'analyse des données, etc. Dans le framework Laravel, le service est principalement utilisé pour gérer une logique métier fastidieuse et l'encapsuler dans un composant réutilisable afin qu'il puisse être appelé dans plusieurs contrôleurs, référentiels et services, améliorant ainsi le taux de réutilisation du code et réduisant la redondance du code.

Normalement, Service et Repository sont utilisés pour mettre en œuvre une série d'opérations commerciales sur les données, mais Service doit être davantage encapsulé pour atteindre un degré élevé d'abstraction et de simplification de l'entreprise. Le service accepte les demandes des clients, traite la logique métier et renvoie des résultats ou lève des exceptions.

Différent du référentiel, le service encapsule de nombreuses logiques métier et pour différentes fonctions métier, vous pouvez créer plusieurs classes de service différentes pour faciliter la division logique du code.

2. Comment implémenter Service

Lorsque vous utilisez Service, vous devez faire attention à deux aspects : créer une classe Service et appeler la classe Service si nécessaire. Le code sera expliqué en détail ci-dessous.

  1. Créer un service

Lors de la création d'un service, vous devez prendre en compte la fonction et l'appelant du service. Dans des circonstances normales, certaines opérations de base d'ajout, de suppression, de modification et de requête sont implémentées dans le service, ainsi que d'autres logiques métier plus spécifiques.

Ce qui suit prend comme exemple un service enregistré par un utilisateur pour montrer l'implémentation conventionnelle du service :

<?php

namespace AppServices;

use AppRepositoriesUserRepository;

class RegisterService
{
    protected $userRepository;

    /**
     * RegisterService constructor.
     *
     * @param UserRepository $userRepository
     */
    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    /**
     * 用户注册.
     *
     * @param array $data
     *
     * @return mixed
     */
    public function register(array $data)
    {
        // TODO: 进一步验证
        $this->userRepository->create($data);
    }
}

Dans le code ci-dessus, le premier espace de noms AppServices et le nom de classe du service est RegisterService. L'objet UserRepository doit être injecté dans le constructeur. Dans Service, nous avons implémenté la logique d'enregistrement des utilisateurs et utilisé la méthode create() de UserRepository pour créer un nouvel utilisateur dans la base de données.

  1. Appeler le service

Après avoir eu le service, vous devez toujours l'appeler dans le contrôleur et le référentiel. Ce qui suit prend l'exemple de l'appel de RegisterService dans Controller pour afficher le code appelant :

<?php

namespace AppHttpControllers;

use AppHttpRequestsRegisterRequest;
use AppServicesRegisterService;

class RegisterController extends Controller
{
    public function register(RegisterRequest $request, RegisterService $registerService)
    {
        // TODO: 调用 Service 进行注册
        $registerService->register($request->validated());
    }
}

Dans le code ci-dessus, lorsque vous utilisez RegisterService, vous devez transmettre l'objet UserRepository dans son constructeur, et lors de l'appel, vous devez injecter RegisterService dans le paramètre de méthode de l’objet RegisterController.

3. Autres problèmes nécessitant une attention particulière dans Service

Vous devez également faire attention aux problèmes suivants lors de l'utilisation de Service dans Laravel :

  1. Le service n'est qu'une classe et peut dépendre d'autres services, référentiels ou d'autres classes. Vous devez toujours l'utiliser lorsque vous l'utilisez. Injectez des dépendances dans le constructeur.
  2. Le service doit implémenter une logique métier spécifique, ce qui nécessite également que le service reste simple et léger. Si l'activité mise en œuvre par le Service est trop complexe, vous devez envisager de scinder le Service. Il est généralement recommandé que chaque Service n'implémente qu'une seule fonction.
  3. N'incluez pas le traitement logique au niveau de la vue dans Service. La logique dans Service ne doit rien avoir à voir avec la logique du contrôleur et des autres services appelés.

4. Conclusion

Le service est l'un des composants importants de Laravel, et ses avantages en tant que composant de logique métier sont très évidents. Après Laravel 5.8/6, Laravel a officiellement introduit un mécanisme d'enregistrement automatique du service plus pratique, facilitant l'intégration du service. Pour une logique métier de plus en plus complexe, le code de l’organisation de service est plus clair et plus facile à comprendre, simplifie la complexité du code et offre une meilleure évolutivité et maintenabilité.

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!

Déclaration:
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