如何减少冗余代码行? (php)

How to lessen redundant line of code? (php)

我的控制器已经可以正常工作并完成了。但是我观察了代码的redundant/repetition。

具体为以下代码:

$this->authorize('applicant', $job);

这是我控制器中的完整代码:

public function interviewees(Job $job)
{       
    //more codes
}

public function applicants(Job $job)
{       
    //more codes
}

public function apply(Job $job)
{   
    $this->authorize('applicant', $job);

    //more codes
}

public function cancel(Job $job)
{   
    $this->authorize('applicant', $job);

    //more codes
}

//and 5 more methods using same code of $this->authorize('applicant', $job);


我的问题是在 php 或 laravel 中我们可以处理这种情况,减少冗余代码吗?

您可以使用 laravel-middleware 而不是政策,在您的 __construct():

中申请特定方法
php artisan make:middleware OperatorMiddleware

在句柄方法中做一些过滤。

class OperatorMiddleware
{
    public function handle($request, Closure $next, $guard = null)
    {
        //do some filter here

        return $next($request);
    }
}

\Http\Kernel.php里面,在routeMiddleware里面注册中间件。

protected $routeMiddleware = [
    'operator' => \App\Http\Middleware\OperatorMiddleware::class,
],

你可以为特定方法调用它:

public function __construct()
{
    $this->middleware('operator', ['only' => ['apply','cancel']]);
}