Laravel, como você deve estar ciente, é uma ferramenta poderosa, e o ciclo de vida das requisições é o melhor lugar para começar quando se quer aprender mais sobre o framework. Descreverei o processo que ocorre entre uma requisição HTTP à sua aplicação e a resposta. Um olhada mais a fundo sobre do ciclo de vida ajudará nossa compreensão do framework.
Autoloader, kernel, Service Providers, Dispatch Request, e Router são apenas alguns dos termos usados durante o ciclo de vida de uma requisição. Uma vez que você tenha uma compreensão completa de todos os termos, você estará mais confiante e à vontade com Laravel.
O arquivo public/index.php serve como ponto de entrada para todas as requisições dentro do framework. Este arquivo também serve como ponto de partida para o restante do framework ser carregado.

O arquivo carrega a definição do autoloader gerado pelo composer antes de recuperar/carregar a instância da aplicação Laravel dentro do arquivo bootstrap/app.php.
A primeira ação executada pelo framework em si, é a criação de uma instância do application/ServiceContainer.
Durante o ciclo de vida, a requisição recebida é enviada ao Kernel Http ou ao Kernel Console, dependendo do tipo de requisição.

O Kernel Http estende a classe Illuminate\Foundation\Http\Kernel, que define um conjunto de bootstrappers que serão executados antes que a requisição seja tratada.
Estes bootstrappers configuram para você, de imediato:
O Kernel HTTP (app/HttpKernel.php) também define uma lista de middlewares HTTP através da qual todas as requisições devem passar antes de serem tratadas pela aplicação.
Estes middlewares tratam da leitura e escrita da sessão HTTP, identifica se o aplicativo está em modo de manutenção valida o token CSRF, dentre outras tarefas.
A assinatura do método handle() dentro do Kernel HTTP é bastante simples: ele recebe uma Requisição e retorna uma Resposta.
/**
* Trata a requisição recebida pela aplicação
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function handle($request)
{
// Também executa outras tarefas
return $response;
}
Considere o
Kernelcomo uma grande caixa preta que contém toda a sua aplicação. Ele retorna respostas HTTP se você alimentá-lo com requisições HTTP.
Uma das mais importantes ações de bootstrapping que o Kernel HTTP realiza durante o ciclo de vida da requisição, é carregar os Service Providers.

Todos os Service Providers para a aplicação são configurados dentro do arquivo config\app.php em um array chamado providers.
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
...
App\Providers\RouteServiceProvider::class,
],
Laravel itera através do array de providers e instancia cada um deles. Após instanciar os providers, o método register() será chamado a todos os providers. Então, uma vez que todos os providers tenham sido registrados, o método boot() será chamado para carregar cada provider.
Os Service Providers tem seu próprio ciclo de vida, que é algo parecido com isto:
Instancia providers -> registra providers -> carrega providers
Os Service Providers são responsáveis por carregar todos os elementos chave da aplicação, como:
Fundamentalmente, todas as principais características oferecidas por Laravel são inicializadas e configuradas por um Service Provider.
Os Providers são o elemento mais importante do processo de bootstrap durante o ciclo de vida de uma requisição dentro de uma aplicação Laravel, simplesmente porque eles inicializam e configuram inúmeras características importantes fornecidas pelo framework.
Um dos mais importantes Service Providers carregados em sua aplicação é o App\Providers\RouteServiceProvider. Este Service Provider carrega o(s) arquivo(s) de rota(s) contidos no diretório de \routes de sua aplicação.

Uma vez que a aplicação tenha sido iniciada e todos os Service Providers tenham sido registrados e carregados, a requisição HTTP será despachada para um dos arquivos de rotas. O router então, por sua vez, enviará a requisição para uma rota ou controlador. Em ambas opções um ou vários middlewares podem ser chamados.
// Encaminha requisição para uma rota que retorna uma view
Route::get('/', function () {
return view('welcome');
});
// Encaminha requisição para um Controller
Route::get('profile', [UserController::class, 'show'])->middleware('auth');
Middlewares fornecem um mecanismo conveniente para filtrar ou examinar as requisições HTTP que entram em sua aplicação.
Se a requisição passar por todos os middlewares designados para a rota, a rota ou o método do controller será executado e a resposta será enviada de volta através da cadeia de middlewares.
A nossa ultima peça do quebra cabeça. Todas as rotas e controllers devem fornecer uma resposta, que deve ser enviada de volta para o navegador do usuário. Laravel fornece várias maneiras diferentes de retornar respostas.

Quando uma rota ou método do controller retorna uma resposta, a resposta irá fluir de volta para fora através do middleware da rota, dando à aplicação a oportunidade de alterar ou examinar a resposta de saída.
Geralmente, a sua resposta não será uma simples string ou array. Em vez disso, em grande parte do tempo, você estará retornando uma instancia da classe Illuminate\Http\Response.
Uma instância da classe Response deriva da classe Symfony\Component\HttpFoundation\Response, que fornece uma série de métodos para a construção de respostas HTTP.
Algumas das vantagens de retornar uma instância completa da classe Response, é que você pode alterar o código de status HTTP e os cabeçalhos da resposta.
Finalmente, uma vez que a resposta tenha passado por todos os middlewares, o método handle() do kernel HTTP fornece o objeto de resposta, e o arquivo index.php usa a resposta retornada para chamar o método send(). O método send()por sua vez envia o conteúdo da resposta para o navegador do usuário.
E assim concluímos nossa jornada através do ciclo de vida das requisições em Laravel!
Perfeito esse material, de suma importância para quem está iniciando.. É preciso entender isso... E irá fazer toda a diferença.
Deixe um comentário