我的问题有没有办法在 php 或 laravel 中我们可以处理这种情况,减少冗余代码?
我的控制器已经工作并完成。但我观察到代码的冗余/重复。
专门针对以下代码:
$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-中间件代替策略,在__construct()
内申请特定方法:
php artisan make:middleware OperatorMiddleware
在句柄方法中执行一些筛选器。
class OperatorMiddleware
{
public function handle($request, Closure $next, $guard = null)
{
//do some filter here
return $next($request);
}
}
在HttpKernel.php
内部,注册routeMiddleware
内部的中间件。
protected $routeMiddleware = [
'operator' => AppHttpMiddlewareOperatorMiddleware::class,
],
您可以针对特定方法调用它:
public function __construct()
{
$this->middleware('operator', ['only' => ['apply','cancel']]);
}