>  기사  >  PHP 프레임워크  >  Laravel Action의 작성 단계와 실습에 대한 자세한 소개

Laravel Action의 작성 단계와 실습에 대한 자세한 소개

PHPz
PHPz원래의
2023-04-21 10:05:50726검색

Laravel은 간단하면서도 강력한 API와 포괄적인 툴킷으로 인기가 높은 매우 인기 있는 PHP 개발 프레임워크입니다. Laravel에서 "액션"은 컨트롤러를 구축하고 로직 레이어를 보다 쉽게 ​​단순화할 수 있는 개념입니다. 다음은 Laravel Action을 작성하는 단계와 실습을 자세히 소개합니다.

  1. 액션 클래스 만들기

먼저 액션 클래스를 만들어야 합니다. Laravel 8 이상에서는 Artisan 명령을 통해 이를 생성할 수 있습니다:

php artisan make:action MyAction

이렇게 하면 app/Action 디렉토리에 새로운 클래스 파일 "MyAction.php"가 생성됩니다. 이제 Action의 로직 작성을 시작할 수 있습니다.

  1. Action의 로직 작성

Action에서 컨트롤러의 각 메소드에 대한 특정 비즈니스 로직을 정의할 수 있습니다. 여기서는 사용자 로그인 논리를 처리하는 메서드를 만듭니다.

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

위 예에서는 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을 참조했습니다. 그런 다음 첫 번째 매개변수는 Laravel의 Request 객체이고 두 번째 매개변수는 위에서 생성한 LoginUserAction 인스턴스인 login() 메서드를 추가했습니다.

login()에서는 먼저 요청 내용을 기반으로 이메일과 비밀번호를 추출한 다음 Action을 호출하여 $credentials 매개변수를 통해 로직을 실행합니다. 성공하면 사용자를 JSON 형식으로 반환하고, 그렇지 않으면 클라이언트에 오류 메시지를 반환합니다.

  1. Call Action

이제 login() 메서드에 액세스하고 LoginUserAction 클래스의 실행 메서드를 호출할 수 있습니다. HTTP 요청에 일부 로그인 자격 증명이 포함된 배열을 전달하고 결과를 반환합니다.

경로에 해당 로그인 경로를 정의하세요:

<?php

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

Route::post(&#39;/login&#39;, [AuthController::class, &#39;login&#39;])->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. Summary

Laravel Action은 비즈니스 로직을 구성하는 간단하고 깔끔한 방법을 제공합니다. 비즈니스 로직을 컨트롤러에서 Action 클래스로 이동하면 코드 재사용 및 유지 관리 가능성이 크게 향상될 수 있습니다.

Laravel Action을 사용할 때는 다음 두 가지 모범 사례를 따라야 합니다.

  • 각 메서드는 한 가지 작업만 수행해야 합니다.
  • 외부 클래스나 Action 클래스의 객체에 직접 접근하는 것을 피하고, 변수를 전달하는 방식을 사용하여 데이터의 공통적이고 반복적인 처리를 구현합니다.

마지막으로 Action 기능이 Laravel 8에서 도입되었다는 점에 유의해야 합니다. 이전 버전의 Laravel을 사용하는 경우 수동으로 Action 클래스를 생성하고 클래스 파일을 적절한 위치에 저장해야 할 수도 있습니다. 컨트롤러를 수동으로 인스턴스화하고 호출합니다.

위 내용은 Laravel Action의 작성 단계와 실습에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.