Как уменьшить лишнюю строку кода? (php) - PullRequest
0 голосов
/ 08 января 2020

Мой контроллер уже работает и завершен. Но я наблюдаю избыточность / повторение кода.

Специально для кода ниже:

$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, чтобы мы могли справиться с этой ситуацией, уменьшить избыточные коды?

1 Ответ

2 голосов
/ 08 января 2020

Вы можете использовать laravel -программу вместо политики, чтобы подать заявку на определенные c методы внутри вашего __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,
],

И вы можете вызвать его для указания метода c (s). ):

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