Ciclo da requisição
Como uma requisição chega à rota, passa por middleware e produz uma resposta.
- O servidor web direciona a URL para
public/index.php. - O arquivo exige
bootstrap/app.phpe chamaApplication::run(). - O bootstrap define caminhos, carrega autoload Composer, Dotenv, config e sessão; tenta restaurar o cookie remember quando aplicável.
- A aplicação cria Router/Request e carrega as definições de rotas Web/API.
- Router identifica método e URI, executa middlewares na ordem registrada e resolve a action.
- O controller lê o Request, usa services/repositories quando necessário e produz HTML, redirect ou JSON.
- Exceções de rota são convertidas em erro HTTP controlado; a política de debug depende do ambiente.
Entradas
O servidor de desenvolvimento pode ser iniciado com php mvc serve. Para produção, configure o servidor para expor apenas public/ e enviar URLs não-arquivo para public/index.php.
Estado e diferenças
A Web usa sessão/cookie e CSRF para operações com estado. A API própria usa token Bearer e contexto de autenticação API; não confunda os mecanismos. Consulte Autenticação e API HTTP e endpoints próprios.
Percurso de uma requisição, passo a passo
| Passo | O que ocorre | Implicação para quem desenvolve |
|---|---|---|
| 1 · Entrada | Servidor encaminha URL para public/index.php. | Somente public/ deve ser documentado como document root. |
| 2 · Bootstrap | bootstrap/app.php carrega Composer, .env, config e sessão. | Configuração e sessão precedem o despacho. |
| 3 · Registro | Application cria Request/Router e inclui rotas web e API. | Uma action só pode ser chamada se a rota for incluída. |
| 4 · Correspondência | Router compara método e URI e extrai parâmetros. | Parâmetros escalares são convertidos quando tipados. |
| 5 · Proteção | Middlewares associados ao grupo e à rota rodam em sequência. | Negar aqui impede que a action seja executada. |
| 6 · Action | Controller lê Request, valida e delega quando necessário. | Use Service/Repository apenas onde a regra pede. |
| 7 · Saída | Controller escreve HTML, redirect ou JSON. | Helpers de resposta encerram a execução quando indicado. |
Para acompanhar cada fronteira, veja Roteamento, Controllers, Requests, Respostas e Middleware.
Etapas globais antes do despacho
Ao construir a aplicação, Application aplica cabeçalhos de segurança e registra o middleware global SecurityHeadersMiddleware antes de despachar a rota. Entre os efeitos estão CSP com nonce, Permissions-Policy e remoção de X-Powered-By; HSTS só é enviado quando APP_ENV=production e a requisição é HTTPS. Para scripts inline autorizados pela CSP, gere o atributo com cspNonce(); não remova a política adicionando scripts inline sem nonce.
Log automático da requisição
A aplicação registra logRequest() como função de shutdown. Ao final, o registro inclui método, URI, status HTTP, IP, duração e memória; o destino HTTP é storage/logs/requisicao/requests-YYYY-MM-DD.log. Esse arquivo é distinto dos logs de aplicação/erro. Planeje permissões, retenção e acesso ao diretório, pois URI e IP também podem ser dados sensíveis.