Laravel para Nível Pleno

Compartilhado por um usuário do Flashcards.gg · gerado com IA · Denunciar este conjunto

Conceitos avançados e arquitetura do framework Laravel para desenvolvedores em nível pleno.

50 cartões Português Nível: Intermediário Programação Publicado
Toque no cartão para virar

Cartões · 50

Ciclo de Vida da Requisição (Request Lifecycle)
Entra por public/index.php, carrega o Composer, instancia a aplicação em bootstrap/app.php e encaminha a requisição via HTTP Kernel através do pipeline de middlewares até a rota ou controller.
Service Container
Contêiner de Injeção de Dependências (IoC) que gerencia a instanciação e resolução de classes, eliminando o acoplamento direto via Dependency Injection automática e Reflection.
Service Providers
Ponto central de inicialização da aplicação; configuram bindings no container no método register() e executam lógica após todos os serviços estarem prontos no método boot().
Diferença entre bind() e singleton()
bind() instancia um novo objeto a cada resolução no container, enquanto singleton() resolve a dependência uma única vez e reutiliza a mesma instância nas chamadas subsequentes.
Facades
Classes que oferecem uma interface estática para serviços registrados no Service Container, usando internamente o método mágico __callStatic() apontado por getFacadeAccessor().
Estrutura do bootstrap/app.php no Laravel moderno
Configura a aplicação de forma fluente, unificando o registro de rotas (withRouting), middlewares globais/grupos (withMiddleware) e tratamento centralizado de exceções (withExceptions).
Middleware
Camada intermediária que inspeciona e filtra requisições HTTP antes de chegarem ao controller ou manipula a resposta final antes de ser enviada ao cliente via padrão Pipeline.
Middleware Terminable
Middleware que implementa o método terminate(), executado após a resposta HTTP já ter sido enviada ao navegador, ideal para logs pesados ou tarefas pós-envio.
Route Model Binding Implícito
Injeção automática do model Eloquent correspondente ao parâmetro da rota baseado no nome da variável e na chave primária (ou campo customizado definido na rota).
Route Model Binding Explícito
Mapeamento manual de um parâmetro de rota para uma classe ou query específica, registrado via Route::model() ou Route::bind() geralmente dentro do boot da aplicação.
Form Request Validation
Classe dedicada que encapsula a lógica de autorização (authorize) e regras de validação (rules) de uma requisição HTTP, desacoplando o controller dessa responsabilidade.
Custom Validation Rules
Objetos que implementam a interface ValidationRule com o método validate(), permitindo regras de validação complexas, reutilizáveis e com tradução de erros.
Eloquent Active Record
Padrão de arquitetura onde cada model representa uma tabela e sua instância representa uma linha, contendo tanto o acesso aos dados quanto a lógica de persistência e negócio.
Mass Assignment e $fillable vs $guarded
Mecanismo de proteção contra gravação indevida; $fillable define lista branca de atributos permitidos via create()/update(), enquanto $guarded define campos proibidos.
Eager Loading vs Lazy Loading
Lazy Loading carrega relacionamentos sob demanda gerando problema de N+1 queries; Eager Loading (with()) pré-carrega relacionamentos em poucas queries otimizadas.
Lazy Loading Prevention
Model::preventLazyLoading(!app()->isProduction()) desativa lazy loading em desenvolvimento, lançando exceção para forçar o uso correto de Eager Loading.
Eloquent Scopes Locais
Métodos iniciados por scope (ex: scopeAtivo($query)) no model que encapsulam filtros SQL reutilizáveis invocados diretamente na Query Builder sem o prefixo scope.
Eloquent Scopes Globais
Classes que implementam Scope e aplicam restrições automáticas a todas as queries de um model (como SoftDeletes), adicionadas via booted() com addGlobalScope().
Eloquent Observers
Classes dedicadas a escutar múltiplos eventos do ciclo de vida de um model (creating, created, updating, deleted, etc.), desacoplando ações secundárias do modelo.
Model Events vs Observers
Model Events são declarados diretamente no model via closures no método booted(); Observers agrupam todos os handlers de eventos em uma classe externa dedicada.
Eloquent Accessors e Mutators modernos
Métodos com retorno de objeto Attribute onde get define a transformação ao ler o dado e set define a formatação antes de persistir no banco de dados.
Eloquent Casts
Conversão automática de colunas para tipos nativos do PHP (int, bool, json, collection, AsEnumCollection, etc.), declarada pela propriedade $casts ou método casts().
Database Transactions manuais
Controle explícito via DB::beginTransaction(), DB::commit() e DB::rollBack(), garantindo atomicidade em operações de múltiplos passos.
DB::transaction() closure
Executa operações dentro de uma transação automática, fazendo commit se o closure finalizar com sucesso ou rollback e re-lançamento caso ocorra qualquer exceção.
Database Migrations
Controle de versão do banco de dados em código PHP estruturado, contendo métodos up() para aplicar alterações estruturais e down() para reverter.
Queues e Jobs
Processamento assíncrono de tarefas em segundo plano (enviar e-mails, processar arquivos), implementando a interface ShouldQueue despachada para drivers de fila.
Job Middleware
Camada que intercepta a execução de jobs na fila, permitindo implementar rate limiting, travas de concorrência ou verificações de integridade antes do handle().
Unique Jobs
Jobs que implementam ShouldBeUnique, impedindo que tarefas idênticas fiquem enfileiradas simultaneamente com base em uma chave única e tempo de lock.
Eventos e Listeners
Implementação do padrão Observer/Pub-Sub onde um Evento transporta dados de um acontecimento e múltiplos Listeners respondem de forma síncrona ou assíncrona.
Event Discovery
Mapeamento automático entre Eventos e Listeners pelo Laravel baseado nos type-hints do método handle() do listener, dispensando registro manual em providers.
Task Scheduling
Agendador centralizado no Laravel disparado a cada minuto pelo cron do servidor (* * * * * php artisan schedule:run), definindo frequência fluente de comandos.
Schedule Without Overlapping
Método ->withoutOverlapping() no agendador que usa locks em cache para impedir que uma tarefa agendada rode se a execução anterior ainda estiver ativa.
Cache Tags
Recurso suportado por Redis e Memcached que permite taguear itens em cache e invalidar grupos inteiros de dados relacionados de uma só vez (flush por tag).
Cache Lock Atômico
Mecanismo (Cache::lock()) que impede condições de corrida distribuídas garantindo que apenas um processo execute determinada seção crítica simultaneamente.
Laravel Gate
Abordagem baseada em closures para autorização rápida de ações gerais independentes de model, acessível via Gate::define() e Gate::allows().
Laravel Policy
Classe que agrupa lógica de autorização vinculada a um model Eloquent específico, mapeando permissões como view, create, update e delete para usuários.
Laravel Sanctum
Sistema de autenticação leve para SPAs via cookies de sessão com proteção CSRF e para APIs externas por meio de Personal Access Tokens com escopos de habilidade.
API Resources (JsonResource)
Camada de transformação entre os models Eloquent e as respostas JSON, controlando formato, ocultando colunas sensíveis e formatando relacionamentos.
Contextual Binding
Configuração no container para injetar implementações diferentes de uma mesma interface dependendo de qual classe concreta está solicitando a dependência.
Custom Artisan Commands
Classes que herdam de Command, com assinatura definida em $signature e execução em handle(), usadas para automações, rotinas CLI e manutenção do sistema.
HTTP Client (PendingRequest)
Wrapper sobre a biblioteca Guzzle com sintaxe limpa para requisições externas, pooling assíncrono, retries com backoff e mocks integrados para testes.
Laravel Notifications
Mecanismo uniforme para entrega de mensagens curtas em múltiplos canais simultâneos (mail, database, SMS via Vonage, broadcast, Slack).
Database Seeding e Factories
Factories usam Faker para definir blueprints de dados fictícios para testes; Seeders persistem esses dados no banco para ambientes de teste e homologação.
Pest PHP / PHPUnit no Laravel
Frameworks de testes integrados que suportam Feature Tests (requisições HTTP completas e banco em memória) e Unit Tests (testes isolados de métodos).
RefreshDatabase Trait
Trait em testes que migra o banco de dados na primeira execução e envolve cada teste em uma transação com rollback automático ao final de cada execução.
Mocking e Bus Fake
Recursos como Bus::fake() e Event::fake() que interceptam o despacho de jobs/eventos durante testes para garantir que foram chamados sem executá-los de fato.
Rate Limiting com RateLimiter
Controle centralizado de vazão de requisições por IP ou usuário autenticado, aplicado via middleware 'throttle' para mitigar ataques de força bruta e abusos.
Otimizações de Produção (Artisan Cache)
Comandos essenciais de build como config:cache, route:cache, view:cache e event:cache que compilam arquivos PHP estáticos acelerando o boot.
Tratamento de Exceções Customizado
Métodos renderable() e reportable() no manipulador de exceções para transformar erros específicos em respostas JSON padronizadas ou enviá-los a serviços externos.
Database Pruning (Mass Pruning)
Interface MassPrunable ou trait Prunable no model com método prunable(), permitindo remoção periódica e performática de registros obsoletos via artisan.

Conjuntos relacionados

Mais em Programação →