source_url | revision | status |
---|---|---|
2cda2495b7737431b295d64dc4e0e38e35ce5e48 |
ready |
A estrutura padrão da aplicação Laravel visa fornecer um excelente ponto de partida para aplicações grandes e pequenas. Mas você é livre para organizar sua aplicação como quiser. O Laravel não impõe quase nenhuma restrição sobre a localização de qualquer classe - desde que o Composer possa carregar automaticamente a classe.
Nota: Começando agora com o Laravel? Confira o Laravel Bootcamp para uma jornada prática pelo framework enquanto orientamos você na construção da sua primeira aplicação Laravel.
O diretório app
contém o código principal da sua aplicação.
Exploraremos esse diretório com mais detalhes em breve; entretanto, quase todas
as classes da sua aplicação estarão neste diretório.
O diretório bootstrap
contém o arquivo app.php
que inicializa o framework.
Este diretório também abriga um diretório cache
que contém arquivos gerados
pelo framework para otimização de desempenho, como arquivos de cache de
rotas e serviços.
O diretório config
, como o nome indica, contém todos os arquivos de
configuração da sua aplicação.
É uma ótima ideia ler todos esses arquivos e se familiarizar com todas as opções
disponíveis.
O diretório database
contém migrações de banco de dados, fábricas de modelos e
sementes.
Se desejar, você também pode usar este diretório para armazenar um banco de
dados SQLite.
O diretório public
contém o arquivo index.php
, que é o ponto de entrada para
todas as requisições que entram na sua aplicação e configura o carregamento
automático.
Este diretório também abriga seus ativos como imagens, JavaScript e CSS.
O diretório resources
contém suas visualizações, bem como seus
ativos brutos e não compilados, como CSS ou JavaScript.
O diretório routes
contém todas as definições de rota da sua aplicação.
Por padrão, dois arquivos de rota estão incluídos no Laravel: web.php
e
console.php
.
O arquivo web.php
contém rotas que o Laravel coloca no grupo de middlewares
web
, que fornecem estado de sessão, proteção contra CSRF e encriptação de
cookies.
Se a sua aplicação não oferecer uma API RESTful sem estado, todas as suas
rotas provavelmente serão definidas no arquivo web.php
.
O arquivo console.php
é onde você pode definir todos os comandos de console
baseados em closure.
Cada closure está vinculada a uma instância de comando, permitindo uma
abordagem simples para interagir com os métodos de entrada e saída de cada
comando.
Mesmo que este arquivo não defina rotas HTTP, ele define pontos de entrada
(rotas) baseados em console da sua aplicação.
Você também pode agendar tarefas no arquivo console.php
.
Opcionalmente, você pode instalar arquivos de rota adicionais para rotas de API
(api.php
) e canais de transmissão (channels.php
), através dos comandos
install:api
e install:broadcasting
do Artisan.
O arquivo api.php
contém rotas que não devem possuir estado, portanto, as
requisições que entram na aplicação por meio dessas rotas devem ser autenticadas
por meio de tokens e não terão acesso ao estado da sessão.
O arquivo channels.php
é onde você pode registrar todos os canais de
transmissão de eventos que sua aplicação suporta.
O diretório storage
contém seus logs, templates Blade compilados, sessões
baseadas em arquivos, caches de arquivos e outros arquivos gerados pelo
framework.
Este diretório é dividido nos diretórios app
, framework
e logs
.
O diretório app
pode ser usado para armazenar qualquer arquivo gerado pela sua
aplicação.
O diretório framework
é usado para armazenar arquivos e caches gerados pelo
framework.
Finalmente, o diretório logs
contém os arquivos de log da sua aplicação.
O diretório storage/app/public
pode ser usado para armazenar arquivos gerados
pela pessoa usuária, como avatares de perfil, que devem ser acessíveis
publicamente.
Você deve criar um link simbólico em public/storage
que aponte para este
diretório.
Você pode criar o link usando o comando php artisan storage:link
do Artisan.
O diretório tests
contém seus testes automatizados.
Exemplos de testes unitários do Pest ou
PHPUnit e testes de funcionalidades são fornecidos
prontos para uso.
Cada classe de teste deve ter como sufixo a palavra Test
.
Você pode executar seus testes usando os comandos /vendor/bin/pest
ou
/vendor/bin/phpunit
.
Ou, se desejar uma representação mais detalhada e bonita dos resultados dos seus
testes, você pode executá-los usando o comando php artisan test
do Artisan.
O diretório vendor
contém suas dependências do
Composer.
Grande parte da sua aplicação está hospedada no diretório app
.
Por padrão, este diretório tem o namespace App
e é carregado automaticamente
pelo Composer usando o
padrão de carregamento automático PSR-4.
Por padrão, o diretório app
contém os diretórios Http
, Models
e
Providers
.
No entanto, com o tempo, vários outros diretórios serão gerados no diretório
app
conforme você usa os comandos make
do Artisan para gerar classes.
Por exemplo, o diretório app/Console
não existirá até você executar o comando
make:command
do Artisan para gerar uma classe de comando.
Os diretórios Console
e Http
são explicados com mais detalhes em suas
respectivas seções abaixo, mas pense nos diretórios Console
e Http
como
fornecendo uma API para o núcleo da sua aplicação.
O protocolo HTTP e a CLI são mecanismos para interagir com a sua aplicação, mas,
na verdade, não contêm lógica de aplicação.
Em outras palavras, são duas formas de emitir comandos para sua aplicação.
O diretório Console
contém todos os seus comandos do Artisan, enquanto o
diretório Http
contém seus controladores, middlewares e requisições.
Nota: Muitas das classes no diretório
app
podem ser geradas pelo Artisan por meio de comandos. Para revisar os comandos disponíveis, execute o comandophp artisan list make
no seu terminal.
O diretório Broadcasting
contém todas as classes de canais de transmissão da
sua aplicação.
Essas classes são geradas usando o comando make:channel
.
Este diretório não existe por padrão, mas será criado para você quando você
criar seu primeiro canal.
Para saber mais sobre canais, confira a documentação sobre
transmissão de eventos.
O diretório Console
contém todos os comandos do Artisan personalizados da sua
aplicação.
Esses comandos podem ser gerados usando o comando make:command
.
Este diretório não existe por padrão, mas será criado para você pelos comandos
event:generate
e make:event
do Artisan.
O diretório Events
abriga classes de eventos.
Os eventos podem ser usados para alertar outras partes da sua aplicação sobre a
ocorrência de uma determinada ação, proporcionando muita flexibilidade e
desacoplamento.
O diretório Exceptions
contém todas as exceções personalizadas da sua
aplicação.
Essas exceções podem ser geradas usando o comando make:exception
.
O diretório Http
contém seus controladores, middlewares e requisições de
formulário.
Quase toda a lógica para tratar as requisições que entram na sua aplicação será
colocada neste diretório.
Este diretório não existe por padrão, mas será criado para você se você executar
o comando make:job
do Artisan.
O diretório Jobs
abriga os trabalhos enfileiráveis da sua
aplicação.
Os trabalhos podem ser enfileirados pela sua aplicação ou executados de forma
síncrona durante do ciclo de vida da requisição atual.
Os trabalhos executados de forma síncrona durante a requisição atual são às
vezes chamados de comandos, pois são uma implementação do
padrão Command.
Este diretório não existe por padrão, mas será criado para você se você executar
os comandos event:generate
ou make:listener
do Artisan.
O diretório Listeners
contém as classes que tratam seus
eventos.
Os ouvintes de eventos recebem uma instância de evento e executam a lógica em
resposta ao evento que está sendo disparado.
Por exemplo, um evento UserRegistered
pode ser tratado por um ouvinte
SendWelcomeEmail
.
Este diretório não existe por padrão, mas será criado para você se você executar
o comando make:mail
do Artisan.
O diretório Mail
contém todas as suas
classes que representam e-mails enviados pela sua aplicação.
Os objetos de e-mail permitem encapsular toda a lógica de construção de um
e-mail em uma única classe simples que pode ser enviada usando o método
Mail::send
.
O diretório Models
contém todas as suas
classes de modelo do Eloquent.
O ORM Eloquent incluído no Laravel fornece uma implementação simples e bonita do
ActiveRecord para trabalhar com seu banco de dados.
Cada tabela do banco de dados possui um modelo correspondente usado para
interagir com essa tabela.
Os modelos permitem consultar dados em suas tabelas, bem como inserir novos
registros na tabela.
Este diretório não existe por padrão, mas será criado para você se você executar
o comando make:notification
do Artisan.
O diretório Notifications
contém todas as notificações transacionais enviadas
pela sua aplicação, como notificações simples sobre eventos que acontecem na sua
aplicação.
O recurso de notificação do Laravel abstrai o envio de notificações por meio de
uma variedade de drivers, como e-mail, Slack, SMS ou armazenadas em um banco
de dados.
Este diretório não existe por padrão, mas será criado para você se você executar
o comando make:policy
do Artisan.
O diretório Policies
contém as
classes de política de autorização da sua aplicação.
As políticas são usadas para determinar se uma pessoa usuária pode executar uma
determinada ação em um recurso.
O diretório Providers
contém todos os
provedores de serviço da sua aplicação.
Os provedores de serviço inicializam sua aplicação vinculando serviços no
contêiner de serviço, registrando eventos ou executando qualquer outra tarefa
para preparar sua aplicação para as requisições recebidas.
Em uma nova aplicação Laravel, este diretório já conterá o AppServiceProvider
.
Você pode adicionar seus próprios provedores a este diretório conforme
necessário.
Este diretório não existe por padrão, mas será criado para você se você executar
o comando make:rule
do Artisan.
O diretório Rules
contém os objetos de regras de validação customizadas da sua
aplicação.
As regras são usadas para encapsular lógica de validação complicada em um objeto
simples.
Para obter mais informações, verifique a
documentação de validação.