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.
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.
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 :
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!