PHP MVCDOCUMENTAÇÃO
v2.0.0

Estrutura do projeto

Mapa dos diretórios existentes nesta versão.

app/
  Http/Controllers/{Web,Api}/
  Http/Middlewares/  Http/Requests/  Http/Resources/
  Models/ Repositories/ Services/ Support/Helpers/
bootstrap/app.php       cli/Commands/ cli/Stubs/
config/                 database/migrations/ database/seeds/
docs/                   framework/{Auth,Core,Database,Http,Interfaces,Support}/
public/index.php         resources/views/  routes/  storage/  tests/

Namespaces e autoload

Composer PSR-4 mapeia Framework\ para framework/, App\ para app/ e Cli\ para cli/. Funções globais e helpers de view são carregados pelo campo autoload.files.

Camadas

  • framework/: infraestrutura reutilizável.
  • app/: comportamento de exemplo e extensões específicas do projeto.
  • resources/views/: templates PHP.
  • routes/: definição de rotas Web e API.
  • database/: migrations e seeders.
  • public/: document root da aplicação; requests entram por index.php.
  • storage/: logs, cache de rate limit e arquivos enviados.
Não há, nesta revisão, diretórios de eventos/jobs/filas ou templates de e-mail com renderer próprio. Acrescente esses sistemas somente ao implementá-los.

Onde fazer cada alteração

Se você precisa…Comece em…Observe
Adicionar URL e verboroutes/web.php ou routes/api.phpA URL só existe quando a rota é registrada
Orquestrar uma requisiçãoapp/Http/Controllers/Action pública; infraestrutura herdada de Controller
Declarar validaçãoapp/Http/Requests/FormRequest concreto pertence a App, não ao núcleo
Reutilizar regra de aplicaçãoapp/Services/Instanciação explícita; sem container automático
Organizar consultasapp/Repositories/ e app/Models/Repository delega ao Model/Database
Alterar schemadatabase/migrations/Mudança deve ter up() e down()
Ajustar suporte reutilizávelframework/A documentação desta etapa não modifica o framework

Composer mapeia Framework\ para framework/, App\ para app/ e Cli\ para cli/. Helpers globais e helpers de view são carregados pelo autoload.files; por isso funções como url() e e() ficam disponíveis sem import em templates após o bootstrap.

Código em app/ demonstra escolhas de uma aplicação concreta; compare-o com o contrato em framework/ antes de tratar uma convenção local como garantia universal.

Diretório de sessões

storage/sessions/ é criado/usado por Session::start() para persistir sessões em arquivo conforme a configuração PHP. Inclua-o no mapa de diretórios de runtime, junto a logs, cache/rate limit e uploads, e garanta que o processo PHP tenha permissão de escrita. Se a sessão não persistir, verifique diretório, permissões e configuração de sessão do PHP antes de investigar o Controller.