Heim > PHP-Framework > Laravel > Detaillierte Einführung in die Schreibschritte und -praktiken von Laravel Action

Detaillierte Einführung in die Schreibschritte und -praktiken von Laravel Action

PHPz
Freigeben: 2023-04-21 11:18:26
Original
847 Leute haben es durchsucht

Laravel ist ein sehr beliebtes PHP-Entwicklungsframework, das für seine einfache, aber leistungsstarke API und sein umfassendes Toolkit bekannt ist. In Laravel sind „Aktionen“ ein Konzept, mit dem Sie Controller erstellen und Ihre Logikebene einfacher vereinfachen können. Im Folgenden finden Sie eine detaillierte Einführung in die Schritte und Praktiken zum Schreiben von Laravel Action.

  1. Aktionsklasse erstellen

Zuerst müssen Sie eine Aktionsklasse erstellen. In Laravel 8 und höher können Sie es mit dem Artisan-Befehl erstellen:

php artisan make:action MyAction
Nach dem Login kopieren

Dadurch wird eine neue Klassendatei „MyAction.php“ für Sie im Verzeichnis app/Action erstellt. Jetzt können wir mit dem Schreiben der Logik der Aktion beginnen.

  1. Schreiben Sie die Logik der Aktion

In Ihrer Aktion können Sie für jede Methode im Controller eine spezifische Geschäftslogik definieren. Hier erstellen wir eine Methode zur Handhabung der Logik der Benutzeranmeldung.

<?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();
    }
}
Nach dem Login kopieren

Im obigen Beispiel haben wir eine Aktion namens LoginUserAction erstellt. Es empfängt ein Array mit den Anmeldeinformationen des Benutzers, führt einen Anmeldeversuch durch und löst eine Ausnahme aus, wenn ein Fehler auftritt. Andernfalls wird der erfolgreich authentifizierte Benutzer zurückgegeben.

Es ist erwähnenswert, dass wir die Auth-Fassade von Laravel verwenden, um Anmeldevorgänge durchzuführen. Dadurch können wir das Authentifizierungssystem von Laravel problemlos nutzen.

  1. Action in Controllern verwenden

Jetzt haben wir eine Action-Klasse erstellt und ihre Logik definiert. Der nächste Schritt besteht darin, es im Controller zu verwenden.

Der erste Schritt bei der Verwendung von Action besteht darin, den Controller zu öffnen und eine Use-Anweisung hinzuzufügen, um die Action-Klasse einzuführen:

<?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'));
    }
}
Nach dem Login kopieren

Im obigen Code haben wir auf LoginUserAction aus unserem eigenen Namespace verwiesen. Dann haben wir die Methode login() hinzugefügt, deren erster Parameter das Request-Objekt von Laravel und deren zweiter Parameter die oben erstellte LoginUserAction-Instanz ist.

In login() extrahieren wir zunächst die E-Mail-Adresse und das Passwort basierend auf dem Anforderungsinhalt und rufen dann unsere Aktion auf, um die Logik über die $credentials-Parameter auszuführen. Bei Erfolg geben wir den Benutzer im JSON-Format zurück, andernfalls geben wir eine Fehlermeldung an den Client zurück.

  1. Aktion aufrufen

Jetzt können wir auf unsere login()-Methode zugreifen und die Ausführungsmethode in der LoginUserAction-Klasse aufrufen. Wir übergeben in der HTTP-Anfrage ein Array mit einigen Anmeldeinformationen und geben das Ergebnis zurück.

Definieren Sie die entsprechende Login-Route in der Route:

<?php

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

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

Jetzt können wir auf die /login-Route unserer Laravel-Anwendung zugreifen, die wie folgt aussieht:

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

{
    "email": "user@example.com",
    "password": "my_password"
}
Nach dem Login kopieren

Dadurch wird die login()-Methode ausgelöst, die wir im Controller definiert haben. Aufruf von LoginUserAction, Übergabe von E-Mail und Passwort als Parameter.

  1. Zusammenfassung

Laravel Action bietet eine einfache, saubere Möglichkeit, Ihre Geschäftslogik zu organisieren. Durch die Verlagerung der Geschäftslogik aus dem Controller in Aktionsklassen können Sie zahlreiche Verbesserungen bei der Wiederverwendung von Code und bei der Wartbarkeit erzielen.

Bei der Verwendung von Laravel Action sollten Sie die folgenden zwei Best Practices befolgen:

  • Jede Methode sollte versuchen, nur eine Sache zu tun.
  • Vermeiden Sie den direkten Zugriff auf externe Klassen oder Objekte in der Action-Klasse und verwenden Sie die Methode der Variablenübergabe, um eine gemeinsame und wiederholte Verarbeitung von Daten zu erreichen.

Abschließend sei darauf hingewiesen, dass die Action-Funktion in Laravel 8 eingeführt wurde. Wenn Sie eine ältere Version von Laravel verwenden, müssen Sie möglicherweise die Action-Klasse manuell erstellen und die Klassendatei an einem geeigneten Ort speichern Instanziieren Sie den Controller manuell und rufen Sie ihn auf.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Schreibschritte und -praktiken von Laravel Action. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage