Laravel: фиксирует разницу между этапом контроллера __construct() и этапом выполнения других методов

#laravel

#ларавель

Вопрос:

Я расширяю контроллер Laravel для пакета.

Итак, я знаю, что контроллеры Laravel запускают свой конструктор и метод на разных этапах приложения.

 public function __construct()
{
    //Middlewares have not run yet
    //auth()->check() or auth()->user() do not work yet
}
 

И в любом другом методе в вашем контроллере

 public function anyOtherMethod()
{
    //All good, everything has booted.
}
 

Я ищу способ провести различие между этими двумя этапами. Например, есть ли метод, который говорит?

 app()->middlewaresHaveBeenHandled(); //returns true or false

//or 

app()->authIsBootedYouMayUseIt(); //returns true or false
 

Ответ №1:

Запрос session from равен null, если последний еще не обработан приложением. Поэтому хорошей проверкой было бы

 if(request()->route() amp;amp; !request()->hasSession()){
    //request has not been handled
}else{
    //request has been handled
}
 

Проверка маршрута запроса необходима, чтобы убедиться, что это HTTP-запрос, и он не будет мешать тестам или действиям консоли