Rumah >rangka kerja php >Laravel >Pengenalan terperinci kepada langkah-langkah penulisan dan amalan Laravel Action

Pengenalan terperinci kepada langkah-langkah penulisan dan amalan Laravel Action

PHPz
PHPzasal
2023-04-21 10:05:50862semak imbas

Laravel ialah rangka kerja pembangunan PHP yang sangat popular yang popular untuk API yang ringkas namun berkuasa dan kit alat komprehensif. Dalam Laravel, "Tindakan" ialah konsep yang membolehkan anda membina pengawal dan memudahkan lapisan logik anda dengan lebih mudah. Berikut ialah pengenalan terperinci kepada langkah dan amalan tentang cara menulis Tindakan Laravel.

  1. Buat Kelas Tindakan

Mula-mula, anda perlu mencipta kelas Tindakan. Dalam Laravel 8 dan ke atas, anda boleh menciptanya melalui arahan Artisan:

php artisan make:action MyAction

Ini akan mencipta fail kelas baharu "MyAction.php" untuk anda dalam direktori aplikasi/Action. Sekarang, kita boleh mula menulis logik Tindakan.

  1. Tulis logik Tindakan

Dalam Tindakan anda, anda boleh menentukan logik perniagaan khusus untuk setiap kaedah dalam pengawal. Di sini kami akan mencipta kaedah untuk mengendalikan logik log masuk pengguna.

<?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();
    }
}

Dalam contoh di atas, kami mencipta Tindakan yang dipanggil LoginUserAction. Ia menerima tatasusunan yang mengandungi kelayakan log masuk pengguna, melakukan percubaan log masuk dan membuang pengecualian jika terdapat ralat, jika tidak, ia mengembalikan pengguna yang berjaya disahkan.

Perlu diingat bahawa kami menggunakan fasad Auth Laravel untuk melaksanakan operasi log masuk. Ini membolehkan kami memanfaatkan sistem pengesahan Laravel dengan mudah.

  1. Menggunakan Tindakan dalam Pengawal

Kini, kami telah mencipta kelas Tindakan dan menentukan logiknya. Langkah seterusnya ialah menggunakannya dalam pengawal.

Langkah pertama untuk menggunakan Tindakan ialah membuka pengawal dan menambah pernyataan penggunaan untuk membawa masuk kelas Tindakan:

<?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'));
    }
}

Dalam kod di atas, kami merujuk dari ruang nama kami sendiri LoginUserAction. Kemudian kami menambah kaedah log masuk(), yang parameter pertamanya ialah objek Permintaan Laravel dan parameter kedua ialah contoh LoginUserAction yang kami buat di atas.

Dalam log masuk(), kami mula-mula mengekstrak e-mel dan kata laluan berdasarkan kandungan permintaan, dan kemudian memanggil Tindakan kami untuk melaksanakan logik melalui parameter $credentials. Jika berjaya, kami mengembalikan pengguna dalam format JSON, jika tidak, kami mengembalikan mesej ralat kepada klien.

  1. Call Action

Kini, kami boleh mengakses kaedah log masuk() kami dan memanggil kaedah laksana dalam kelas LoginUserAction. Kami akan menghantar tatasusunan yang mengandungi beberapa bukti kelayakan log masuk dalam permintaan HTTP dan mengembalikan hasilnya.

Tentukan laluan log masuk yang sepadan dalam laluan:

<?php

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

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

Kini kami boleh mengakses laluan /login aplikasi laravel kami, yang akan kelihatan seperti ini:

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

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

Ini akan mencetuskan kaedah log masuk() yang kami takrifkan dalam pengawal, memanggil LoginUserAction, menghantar e-mel dan kata laluan sebagai parameter.

  1. Ringkasan

Laravel Actions menyediakan cara yang mudah dan bersih untuk mengatur logik perniagaan anda. Dengan mengalihkan logik perniagaan daripada pengawal dan ke dalam kelas Tindakan, anda boleh mencapai banyak penggunaan semula kod dan peningkatan kebolehselenggaraan.

Apabila menggunakan Tindakan Laravel, anda harus mengikuti dua amalan terbaik ini:

  • Setiap kaedah harus cuba melakukan satu perkara sahaja.
  • Elakkan akses terus kepada kelas luar atau objek dalam kelas Tindakan dan gunakan kaedah menghantar pembolehubah untuk mencapai pemprosesan data yang biasa dan berulang.

Akhir sekali, perlu diingatkan bahawa fungsi Action telah diperkenalkan dalam Laravel 8. Jika anda menggunakan versi lama Laravel, anda mungkin perlu mencipta kelas Action secara manual dan menyimpan fail kelas dalam lokasi yang sesuai dan kemudian nyatakan secara manual dan memanggilnya dalam pengawal.

Atas ialah kandungan terperinci Pengenalan terperinci kepada langkah-langkah penulisan dan amalan Laravel Action. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn