Maison  >  Article  >  cadre php  >  Introduction détaillée aux étapes et pratiques d'écriture de Laravel Action

Introduction détaillée aux étapes et pratiques d'écriture de Laravel Action

PHPz
PHPzoriginal
2023-04-21 10:05:50727parcourir

Laravel est un framework de développement PHP très populaire, apprécié pour son API simple mais puissante et sa boîte à outils complète. Dans Laravel, les « Actions » sont un concept qui vous permet de construire des contrôleurs et de simplifier plus facilement votre couche logique. Ce qui suit est une introduction détaillée aux étapes et aux pratiques nécessaires pour écrire Laravel Action.

  1. Créer une classe d'action

Tout d'abord, vous devez créer une classe d'action. Dans Laravel 8 et supérieur, vous pouvez le créer via la commande Artisan :

php artisan make:action MyAction

Cela créera un nouveau fichier de classe "MyAction.php" pour vous dans le répertoire app/Action. Maintenant, nous pouvons commencer à écrire la logique de l’Action.

  1. Écrivez la logique de l'action

Dans votre action, vous pouvez définir une logique métier spécifique pour chaque méthode du contrôleur. Ici, nous allons créer une méthode pour gérer la logique de connexion des utilisateurs.

<?php

namespace App\Actions;

use Illuminate\Support\Facades\Auth;

class LoginUserAction
{
    public function execute(array $credentials)
    {
        $attempt = Auth::attempt($credentials);

        if (!$attempt) {
            throw new \Exception(&#39;Invalid login credentials&#39;);
        }

        return Auth::user();
    }
}

Dans l'exemple ci-dessus, nous avons créé une action appelée LoginUserAction. Il reçoit un tableau contenant les informations de connexion de l'utilisateur, effectue une tentative de connexion et lève une exception en cas d'erreur, sinon il renvoie l'utilisateur authentifié avec succès.

Il convient de noter que nous utilisons la façade Auth de Laravel pour effectuer les opérations de connexion. Cela nous permet d'exploiter facilement le système d'authentification de Laravel.

  1. Utilisation de l'action dans les contrôleurs

Maintenant, nous avons créé une classe Action et défini sa logique. L'étape suivante consiste à l'utiliser dans le contrôleur.

La première étape de l'utilisation d'Action consiste à ouvrir le contrôleur et à ajouter une instruction use pour introduire la classe Action :

<?php

namespace App\Http\Controllers;

use App\Actions\LoginUserAction;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    public function login(Request $request, LoginUserAction $loginAction)
    {
        $credentials = $request->only(['email', 'password']);

        try {
            $user = $loginAction->execute($credentials);
        } catch (\Exception $e) {
            return response()->json([
                'message' => $e->getMessage()
            ], 401);
        }

        return response()->json(compact('user'));
    }
}

Dans le code ci-dessus, nous avons référencé LoginUserAction à partir de notre propre espace de noms. Ensuite, nous avons ajouté la méthode login(), dont le premier paramètre est l'objet Request de Laravel et dont le deuxième paramètre est l'instance LoginUserAction que nous avons créée ci-dessus.

Dans login(), nous extrayons d'abord l'e-mail et le mot de passe en fonction du contenu de la demande, puis appelons notre action pour exécuter la logique via les paramètres $credentials. En cas de succès, nous renvoyons l'utilisateur au format JSON, sinon nous renvoyons un message d'erreur au client.

  1. Call Action

Nous pouvons maintenant accéder à notre méthode login() et appeler la méthode d'exécution dans la classe LoginUserAction. Nous transmettrons un tableau contenant des informations de connexion dans la requête HTTP et renverrons le résultat.

Définissez la route de connexion correspondante dans la route :

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;

Route::post(&#39;/login&#39;, [AuthController::class, &#39;login&#39;])->name('login');

Nous pouvons maintenant accéder à la route /login de notre application laravel, qui ressemblera à ceci :

POST /login HTTP/1.1
Host: localhost:8000
Content-Type: application/json

{
    "email": "user@example.com",
    "password": "my_password"
}

Cela déclenchera la méthode login() que nous avons définie dans le contrôleur, appelant LoginUserAction, en transmettant l'e-mail et le mot de passe comme paramètres.

  1. Résumé

Laravel Action fournit un moyen simple et propre d'organiser votre logique métier. En déplaçant la logique métier du contrôleur vers les classes d'action, vous pouvez obtenir de nombreuses améliorations en matière de réutilisation du code et de maintenabilité.

Lorsque vous utilisez Laravel Action, vous devez suivre les deux bonnes pratiques suivantes :

  • Chaque méthode doit essayer de faire une seule chose.
  • Évitez l'accès direct aux classes ou objets externes dans la classe Action et utilisez la méthode de transmission de variables pour obtenir un traitement commun et répété des données.

Enfin, il convient de noter que la fonction Action a été introduite dans Laravel 8. Si vous utilisez une ancienne version de Laravel, vous devrez peut-être créer manuellement la classe Action et stocker le fichier de classe dans un emplacement approprié, puis Instanciez et appelez manuellement le contrôleur.

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