如何减少冗余代码行? (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']]);
}
我的控制器已经可以正常工作并完成了。但是我观察了代码的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']]);
}