Estrutura de Directórios

Introdução
A estrutura padrão do Laravel destina-se a oferecer um excelente ponto de partida para as suas aplicações, independentemente do seu tamanho. Contudo poderá organizar a sua estrutura da sua aplicação da forma que mais gostar. O Laravel não impõe quaisquer restrições acerca da localização das suas classes, uma vez que o Composer pode fazer o autoload das mesmas.
O directório raiz
O directório App
O código principal da sua aplicação encontra-se na pasta App. Iremos explorar este directório de forma mais detalhada brevemente; De todas as formas, quase todas as classes do seu projecto é aqui que se encontram.
O directório Bootstrap
A pasta bootstrap
contém o ficheiro app.php
o quel tem a função de inicializar o framework. Este directório também contém um direct´rio de cache, o qual contém ficheiros gerados pela estrutura para a otimização de desempenho da aplicação, tais como que contém arquivos gerados pela estrutura para otimização de desempenho, tais como os ficheiros de cache das rotas e de serviços. Num modo geral, nunca será necessário editar qualquer ficheiro constante nesta pasta.
O directório Config
O directório Config, tal como o nome indica, contém todos os ficheiros de configuração da aplicação. Será de extrema importância dar uma vista de olhos por todos estes ficheiros e familiarizar-se com todas as opções que estão disponiveis nestes ficheiros.
O directório Database
Esta pasta contém as migrações da Base de Dados, as factories dos modelos e as seeds. Se assim o desejar, esta pasta pode conter ainda a sua base de dados SQLite.
O directório Public
O directório public
contém o ficheiro index.php
, que é somente o ponto de entrada para todas as requisições feitas à sua aplicação e é onde é configurado o autoload das suas classes. Esta pasta contém ainda os seus assets, tais como imagens, ficheiros JavaScript ou CSS.
O directório Resources
Este directório contém as suas views e os seus assets antes de serem compilados. Contém ainda os ficheiros de multi idioma.
O directório Routes
A pasta routes é onde estão localizadas as suas rotas. Por defeito são incluídos os ficheiros web.php
, api.php
, console.php
, e channels.php
.
O ficheiro web.php
contém as rotas que o RouteServiceProvider
coloca no middleware web
, o qual oferece o estado das sessões, a proteção CSRF e a encriptação de Cookies. Se a sua aplicação não tem qualquer estado vinculado ou não é uma RESTFul API, então concerteza, todas as suas rotas estarão aqui definidas.
O ficheiro api.php
contém as rotas que o RouteServiceProvider
coloca no middleware api
. Estas rotas estão não têm qualquer estado vinculado e são autenticadas através de tokens e não terão acesso ao estado das sessões.
O ficheiro console.php
é onde pode definir todas as suas closure que os seus comandos na consola utilizam. Cada closure está vinculada a uma instância de comando, permitindo uma abosrdagem simples para interagir com cada método de comando IO. Mesmo que este ficheiro não defina rotas HTTP, ele define pontos de entrada para a aplicação através da consola de comandos.
O ficheiro channels.php
é onde pode registar todos os canais de eventos broadcast da sua aplicação.
O directório Storage
O directório Storage contém os seus logs, templates Blade compiladas, ficheiros de sessão, ficheiros de cache e outros ficheiros gerados pelo framework. Este directório subdivide-se noutros três directórios; app
, framework
, e logs
. O directório app
pode ser usado para guardar qualquer ficheiro gerado pela aplicação. O directório framework é usado para guardar ficheiros gerados pelo framework e pelas caches e finalmente o directório de logs contém os logs da sua aplicação.
A pasta storage/app/public
pode ser usada para guardar os ficheiros gerados pelos utilizadores, tais como imagens. Deverá ter acesso publico. Pode criar um link simbólico (symbolic link) na pasta public/storage o qual irá “apontar” para este directório. Para criar esse link pode deverá usar o comando Artisan php artisan storage:link
.
O directório Tests
É aqui onde constam os testes automatizados da aplicação. The tests
directory contains your automated tests. Nesta pasta são disponibilizados exemplos de testes unitários PHPUnit e funcionalidades de testes estão aqui prontos a serem utilizados. Cada classe de teste deve ser nomeada com o sufixo Test. Pode correr os seus testes utilizando o comando phpunit
ou php vendor/bin/phpunit
. Pode ainda, se assim o desejar ou preferir, utilizar o comando php artisan test
e obterá um retorno mais legível e detalhado dos resultados dos seus testes.
A pasta Vendor
É aqui onde serão alojadas as dependências do Composer.
O directório App
A maior parte da sua aplicação está alojada neste directório. Por defeito este directório está sob o namespace App e é automaticamente carregado pelo Composer, usando o padrão PSR-4 autoloading.
Este directório contém uma grande variedade de directórios adicionais tais como Console
, Http
, e Providers
. Olhe para os directórios Console
e Http
como fornecedores da API de contexto da sua aplicação. O protocolo HTTP e CLI são mecanismos para interagir com a sua aplicação, mas não contendo qualquer logica aplicacional. Por outras palavras, são duas formas de enviar comandos para a sua aplicação. A pasta Console é onde estão todos os comandos Artisan, enquanto na pasta Http contém os controladores, middlewares e requisições.
Muitas outras pastas são criadas dentro da pasta app quando utilizamos o comando Artisan make para a criação de classes. Por exemplo, a pasta app/Jobs não existe enquanto não executar o comando make:job.
Muitas classes na pasta app podem ser criadas através de comandos Artisan. Para verificar todos os comnados disponiveis corra o comando
php artisan list make
no terminal.
O drectório Broadcasting
O directório Broadcasting
contém as classes de canais broadcast para a aplicação. Estas classes são geradas através do comando make:channel. Este directório não existe por defeito, mas será criada quando criar o seu primeiro channel. Para aprender mais sobre channels, verifique a documentação em event broadcasting.
A pasta Console
A pasta Console
contém todos os comandos Artisan customizados para a sua aplicação. Estes comandos podem ser criados através do comando make:command
. Este diretório também hospeda o kernel do console, que é onde seus comandos Artisan personalizados são registrados e suas tarefas agendadas são definidas.
A pasta Events
Mais uma pasta que não existe por defeito, mas que será criada mediante as suas necessidades aplicacionais. Será criada através do comando event:generate
e make:event
. É a pasta onde ficam hospedadas as classes de eventos. Os eventos podem ser usados para emitir alertas para outras partes da aplicação que uma determinada ação aconteceu, fornecendo uma grande flexibilidade e desacoplamento de tarefas.
O directório Exceptions
A pasta Exceptions
contém todas as manipulações de Exceções da aplicação. Se gosta de customizar as suas exceções deverá modificar a classe Handler
constante neste directório.
O directório Http
Neste directório é onde pode encontrar os seus controladores, middlewares e form requests. Quase toda a lógica da sua aplicação será aqui introduzida.
A pasta Jobs
Este directório não existe por defeito, mas será criado se você executar o comando Artisan make:job. O directório Jobs hospeda os queueable jobs. Os Jobs podem ser inseridos em filas pela aplicação e executados de forma síncrona dentro do ciclo de vida do request actual.
O directório Listeners
Outro directório que não existe por defeito e que será criado por si em caso de executar os comandos event:generate
ou make:listener
. A pasta Listeners
contém classes de manipulação de eventos. Os Event Listeners recebem uma instância de evento e executa uma determinada lógica em resposta ao evento disparado. Por exemplo, um evento UserRegistered
event pode ser manipulado por forma a executar um listener SendWelcomeEmail
.
O directório Mail
Este directório será criado se executar o comando make:mail
. A pasta Mail
contém todas as classes representativas de envio de emails. Os objectos Mail permitem encapsular toda a lógica de envio de email numa unica e simples classe que pode ser enviado através do método Mail::send
.
O directório Models
O directório Models
contém todas as suas classes Eloquent. O ORM Eloquent incluido no Laravel proporciona uma elegante e simples implementação ActiveRecord para a interação com a sua Base de Dados. Cada tabela da Base de Dados correspondente a um Model pode ser manipulada através desse model com Eloquent.
A pasta Notifications
Esta pasta não existe por defeito, e será criada se executar o comando make:notification
. A pasta Notifications é onde poderá encontrar todas as notificações transacionais que poderão ser enviadas pela sua aplicação. Esta funcionalidade abstrata trabalha em cima de diversos drivers, tais como email, Slack, SMS, ou salvas na base de dados.
A pasta Policies
Esta pasta também não existe por defeito e será criada através do comando make:policy
. Esta pasta contém as classes de politicas de autorizações para a sua aplicação. Estas Policies
são usadas para determinar se um utilizador pode ou não efectuar ações dadas através de um determinado recurso.
O directório Providers
O directório Providers
contém os service providers para a sua aplicação. Os service providers iniciam a sua aplicação ligando serviços no Service Container, registando eventos e executanto quaisquer outras tarefas para preparar a sua aplicação para receber requisições.
Numa instalação nova de uma aplicação Laravel, este directório já irá conter alguns providers, no entanto é perfeitamente possível criar os seus próprios providers se for necessário.
A pasta Rules
Esta pasta não existe por defeito. Será criada se executar o comando Artisan make:rule
. A pasta Rules contém regras de validação crustomizadas consoante as necessidades da aplicação. Estas Rules
encapsulam lógicas de validação complicadas num simples objecto. Para mais informação consultar validation documentation.