GA黄金甲

详细先容Laravel Action的编写办法和实践

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

        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,接着挪用GA黄金甲 Action 通过 $credentials 的参数来执行逻辑。若是乐成,我们将用户以 JSON 名堂返回,不然我们将过失信息返回给客户端。

挪用Action

现在,我们可以会见GA黄金甲login()要领,并挪用LoginUserAction类中的execute要领。我们将在HTTP请求中转达一个数组,包括了一些登录凭证信息,并返回效果。

在路由中界说对应的登录路由:

<?php use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;

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

登录后复制

现在我们可以会见GA黄金甲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的编写办法和实践的详细内容,更多请关注本网内其它相关文章!

免责说明:以上展示内容泉源于相助媒体、企业机构、网友提供或网络网络整理,版权争议与本站无关,文章涉及看法与看法不代表GA黄金甲滤油机网官方态度,请读者仅做参考。本文接待转载,转载请说明来由。若您以为本文侵占了您的版权信息,或您发明该内容有任何涉及有违公德、冒犯执法等违法信息,请您连忙联系GA黄金甲实时修正或删除。

相关新闻

联系GA黄金甲

18523999891

可微信在线咨询

事情时间:周一至周五,9:30-18:30,节沐日休息

QR code
【网站地图】【sitemap】