PHP MVCDOCUMENTAÇÃO
v2.0.0

Ciclo da requisição

Como uma requisição chega à rota, passa por middleware e produz uma resposta.

  1. O servidor web direciona a URL para public/index.php.
  2. O arquivo exige bootstrap/app.php e chama Application::run().
  3. O bootstrap define caminhos, carrega autoload Composer, Dotenv, config e sessão; tenta restaurar o cookie remember quando aplicável.
  4. A aplicação cria Router/Request e carrega as definições de rotas Web/API.
  5. Router identifica método e URI, executa middlewares na ordem registrada e resolve a action.
  6. O controller lê o Request, usa services/repositories quando necessário e produz HTML, redirect ou JSON.
  7. 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

PassoO que ocorreImplicação para quem desenvolve
1 · EntradaServidor encaminha URL para public/index.php.Somente public/ deve ser documentado como document root.
2 · Bootstrapbootstrap/app.php carrega Composer, .env, config e sessão.Configuração e sessão precedem o despacho.
3 · RegistroApplication cria Request/Router e inclui rotas web e API.Uma action só pode ser chamada se a rota for incluída.
4 · CorrespondênciaRouter compara método e URI e extrai parâmetros.Parâmetros escalares são convertidos quando tipados.
5 · ProteçãoMiddlewares associados ao grupo e à rota rodam em sequência.Negar aqui impede que a action seja executada.
6 · ActionController lê Request, valida e delega quando necessário.Use Service/Repository apenas onde a regra pede.
7 · SaídaController escreve HTML, redirect ou JSON.Helpers de resposta encerram a execução quando indicado.
O Router diferencia rota inexistente (404) de caminho conhecido com verbo não permitido (405). Exceções durante middleware/action são convertidas em erro HTTP controlado; detalhes exibidos dependem do ambiente.

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.