免费发布信息
微信公众号

详细介绍Laravel Action的编写步骤和实践

   来源:黔优网责任编辑:优优  时间:2024-09-19 11:56:51 浏览量:0

laravel是一个非常流行的php开发框架,其凭借其简洁而强大的api和全面的工具包而备受欢迎。在laravel中,“actions”是一种概念,它可以让你更加轻松地构建控制器和简化你的逻辑层。下面是详细介绍laravel action如何编写的步骤和实践。

创建Action类

首先,你需要创建一个Action类。在Laravel 8及以上版本中,可以通过Artisan命令来创建:

php artisan make:action MyAction
登录后复制

这将在app/Action目录下为你创建一个新的类文件“MyAction.php”。现在,我们可以开始编写Action的逻辑了。

编写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的Action。它接收一个包含用户登录凭据的数组,执行登录尝试,如果有错误则会抛出异常,否则返回认证成功的用户。

值得注意的是,我们使用Laravel的Auth门面来执行登录操作。这允许我们轻松地利用Laravel的认证系统。

在控制器中使用Action

现在,我们已经创建了一个Action类并定义了其逻辑。下一步是在控制器中使用它。

使用Action的第一步是打开控制器并添加一个use语句,以引入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-&gt;execute($credentials);
        } catch (\Exception $e) {
            return response()-&gt;json([
                'message' =&gt; $e-&gt;getMessage()
            ], 401);
        }

        return response()-&gt;json(compact('user'));
    }
}
登录后复制

在上述代码中,我们从我们自己的命名空间中引用了 LoginUserAction。然后我们添加了 login() 方法,其首个参数是 Laravel 的 Request 对象,第二个参数是我们上面创建的 LoginUserAction 实例。

在 login() 中,我们首先也根据请求的内容提取出 email 和 password,接着调用我们的 Action 通过 $credentials 的参数来执行逻辑。如果成功,我们将用户以 JSON 格式返回,否则我们将错误信息返回给客户端。

调用Action

现在,我们可以访问我们的login()方法,并调用LoginUserAction类中的execute方法。我们将在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,传入 email 和 password 作为参数。

总结

Laravel Action 提供了一种简单、干净的方法来组织你的业务逻辑。通过将业务逻辑从控制器中移出并放入 Action 类中,你可以带来很多代码重用和可维护性的提升。

在使用 Laravel Action 时,你应该遵循以下两条最佳实践:

每个方法应该尽量只做一件事情。

避免在 Action 类中直接访问外部类或对象,使用传递变量的方式来实现数据的共通和重复的处理。

最后,需要注意的是,在 Laravel 8 中引入了 Action 功能,如果你使用的是较老版本的 Laravel,可能需要手动创建 Action 类,并将类文件存储在一个合适的位置,然后在控制器中手动实例化和调用。

以上就是详细介绍Laravel Action的编写步骤和实践的详细内容,更多请关注本网内其它相关文章!

 
 
 
没用 0举报 收藏 0
免责声明:
黔优网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优网官方立场,请读者仅做参考。本文标题:详细介绍Laravel Action的编写步骤和实践,本文链接:https://www.qianu.com/help/30662.html,欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法信息,请您立即点此【投诉举报】并提供有效线索,也可以通过邮件(邮箱号:kefu@qianu.com)联系我们及时修正或删除。
 
 

 

 
推荐图文
推荐帮助中心
最新帮助中心