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 porindex.php.storage/: logs, cache de rate limit e arquivos enviados.
Onde fazer cada alteração
| Se você precisa… | Comece em… | Observe |
|---|---|---|
| Adicionar URL e verbo | routes/web.php ou routes/api.php | A URL só existe quando a rota é registrada |
| Orquestrar uma requisição | app/Http/Controllers/ | Action pública; infraestrutura herdada de Controller |
| Declarar validação | app/Http/Requests/ | FormRequest concreto pertence a App, não ao núcleo |
| Reutilizar regra de aplicação | app/Services/ | Instanciação explícita; sem container automático |
| Organizar consultas | app/Repositories/ e app/Models/ | Repository delega ao Model/Database |
| Alterar schema | database/migrations/ | Mudança deve ter up() e down() |
| Ajustar suporte reutilizável | framework/ | 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.
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.