📜  如何在 laravel 中使用 trait - PHP (1)

📅  最后修改于: 2023-12-03 15:24:14.951000             🧑  作者: Mango

如何在 Laravel 中使用 Trait

Trait 是 PHP 5.4 新增的功能,它可以让我们复用代码,避免重复编写相同的代码。在 Laravel 中,我们通常使用 Trait 来定义共用逻辑,如授权、验证、缓存等。本文将介绍如何在 Laravel 中使用 Trait。

创建 Trait

首先,我们需要创建一个 Trait,以实现复用代码。在 Laravel 中,我们通常将 Trait 定义在 app/Traits 目录下。例如,我们想定义一个 Trait 来限制用户登录次数:

<?php

namespace App\Traits;

use Illuminate\Support\Facades\Throttle;

trait ThrottlesLogins
{
    public function hasTooManyLoginAttempts($request)
    {
        $maxAttempts = 3;
        $lockoutTime = 1;

        $key = $this->throttleKey($request);

        $throttle = Throttle::get($key, $maxAttempts, $lockoutTime);

        if ($throttle->tooManyAttempts()) {
            $seconds = $throttle->availableIn / 60;

            throw new \Exception('登录次数过多,请' . $seconds . '分钟后再试!');
        }
    }

    public function throttleKey($request)
    {
        $key = $request->input('username') . '|' . $request->ip();

        return $key;
    }
}
使用 Trait

接下来,我们可以在控制器或模型中使用 Trait。例如,在控制器中使用上面定义的 Trait:

<?php

namespace App\Http\Controllers;

use App\Traits\ThrottlesLogins;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    use ThrottlesLogins;

    public function postLogin(Request $request)
    {
        $this->hasTooManyLoginAttempts($request);

        // 登录逻辑
    }
}

在上面的例子中,我们使用了 use 关键字来引入 Trait,然后可以像使用普通方法一样调用 Trait 中的方法。

总结

Trait 是 PHP 5.4 新增的功能,它可以让我们复用代码,避免重复编写相同的代码。在 Laravel 中,我们通常使用 Trait 来定义共用逻辑,如授权、验证、缓存等。本文介绍了如何在 Laravel 中使用 Trait。