ホームページ PHPフレームワーク Laravel Laravel Action の作成手順と実践方法の詳細な紹介

Laravel Action の作成手順と実践方法の詳細な紹介

Apr 21, 2023 am 10:05 AM

Laravel は非常に人気のある PHP 開発フレームワークであり、そのシンプルで強力な API と包括的なツールキットで人気があります。 Laravel では、「アクション」はコントローラーを構築し、ロジック層をより簡単に簡素化できるようにする概念です。以下では、Laravel アクションの作成手順と実践方法を詳しく紹介します。

  1. アクション クラスの作成

まず、アクション クラスを作成する必要があります。 Laravel 8 以降では、Artisan コマンドを使用して作成できます:

php artisan make:action MyAction
ログイン後にコピー

これにより、app/Action ディレクトリに新しいクラス ファイル「MyAction.php」が作成されます。ここで、アクションのロジックを書き始めることができます。

  1. アクションのロジックの作成

アクションでは、コントローラーのメソッドごとに特定のビジネス ロジックを定義できます。ここでは、ユーザー ログインのロジックを処理するメソッドを作成します。

<?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('Invalid login credentials');
        }

        return Auth::user();
    }
}
ログイン後にコピー

上の例では、LoginUserAction という名前のアクションを作成しました。ユーザーのログイン資格情報を含む配列を受け取り、ログインを試行し、エラーがある場合は例外をスローし、それ以外の場合は、正常に認証されたユーザーを返します。

ログイン操作を実行するために Laravel の Auth ファサードを使用していることは注目に値します。これにより、Laravel の認証システムを簡単に活用できるようになります。

  1. コントローラーでのアクションの使用

これで、Action クラスを作成し、そのロジックを定義しました。次のステップは、それをコントローラーで使用することです。

Action を使用するための最初のステップは、コントローラーを開いて、Action クラスを導入する use ステートメントを追加することです。

<?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'));
    }
}
ログイン後にコピー

上記のコードでは、独自の名前空間から LoginUserAction を参照しました。次に、login() メソッドを追加しました。このメソッドの最初のパラメータは Laravel の Request オブジェクト、2 番目のパラメータは上で作成した LoginUserAction インスタンスです。

login() では、まずリクエストの内容に基づいて電子メールとパスワードを抽出し、次にアクションを呼び出して、$credentials パラメーターを通じてロジックを実行します。成功した場合は、ユーザーを JSON 形式で返します。成功しなかった場合は、クライアントにエラー メッセージを返します。

  1. アクションの呼び出し

これで、login() メソッドにアクセスし、LoginUserAction クラスの実行メソッドを呼び出すことができます。 HTTP リクエストでログイン資格情報を含む配列を渡し、結果を返します。

ルート内で対応するログイン ルートを定義します:

<?php

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

Route::post('/login', [AuthController::class, 'login'])->name('login');
ログイン後にコピー

これで、laravel アプリケーションの /login ルートにアクセスできるようになります。これは次のようになります:

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

{
    "email": "user@example.com",
    "password": "my_password"
}
ログイン後にコピー

これにより、コントローラーで定義されたlogin()メソッドはLoginUserActionを呼び出し、電子メールとパスワードをパラメータとして渡します。

  1. 概要

Laravel Action は、ビジネス ロジックを整理するためのシンプルでクリーンな方法を提供します。ビジネス ロジックをコントローラーからアクション クラスに移動することにより、多くのコードの再利用と保守性の向上を実現できます。

Laravel アクションを使用する場合は、次の 2 つのベスト プラクティスに従う必要があります。

  • 各メソッドは 1 つのことだけを実行する必要があります。
  • Action クラス内の外部クラスやオブジェクトへの直接アクセスを避け、変数を渡す方法を使用して、データの共通の繰り返し処理を実現します。

最後に、Action 関数は Laravel 8 で導入されたことに注意してください。古いバージョンの Laravel を使用している場合は、Action クラスを手動で作成し、そのクラス ファイルを次の場所に保存する必要がある場合があります。適切な場所に配置してから、手動でインスタンスを作成し、コントローラーで呼び出します。

以上がLaravel Action の作成手順と実践方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel Frameworkのインストール最新方法 Laravel Frameworkのインストール最新方法 Mar 06, 2025 pm 01:59 PM

Laravel Frameworkのインストール最新方法

Laravel-Adminメニュー管理 Laravel-Adminメニュー管理 Mar 06, 2025 pm 02:02 PM

Laravel-Adminメニュー管理

Laravelで高度な機能を備えたRESTFUL APIを構築する方法は? Laravelで高度な機能を備えたRESTFUL APIを構築する方法は? Mar 11, 2025 pm 04:13 PM

Laravelで高度な機能を備えたRESTFUL APIを構築する方法は?

Laravelのバージョンは最高です Laravelのバージョンは最高です Mar 06, 2025 pm 01:58 PM

Laravelのバージョンは最高です

LaravelでOAUTH2認証と承認を実装する方法は? LaravelでOAUTH2認証と承認を実装する方法は? Mar 12, 2025 pm 05:56 PM

LaravelでOAUTH2認証と承認を実装する方法は?

クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? Mar 14, 2025 pm 01:44 PM

クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか?

Laravelは他のPHPフレームワーク(Symfony、Codeigniter、Yii)と比較してどうですか? Laravelは他のPHPフレームワーク(Symfony、Codeigniter、Yii)と比較してどうですか? Mar 14, 2025 pm 01:49 PM

Laravelは他のPHPフレームワーク(Symfony、Codeigniter、Yii)と比較してどうですか?

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Mar 17, 2025 pm 02:50 PM

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか?

See all articles