Sumário do Curso
Backend com PHP e Laravel 🐘
"PHP nunca morreu — ele só ficou mais elegante com Laravel." — Provérbio Dev
🧭 Atalhos Rápidos
-
Aulas --- 16 aulas completas organizadas em 4 módulos práticos. Ver Trilha
-
Slides --- Slides interativos em Reveal.js para acompanhar cada aula. Acessar Slides
-
Quizzes --- Teste seus conhecimentos com quizzes interativos. Fazer Quizzes
-
Projetos --- Projetos práticos para construir seu portfólio. Ver Projetos
-
Exercícios --- Pratique com exercícios focados em código real. Praticar Agora
-
Setups --- Guias de instalação e configuração do ambiente PHP/Laravel. Configurar Ambiente
🗺️ Mapa da Jornada
O curso está estruturado para levar você do zero à construção de aplicações web escaláveis com Laravel:
- Módulo 1 – Fundamentos: PHP moderno, POO em PHP, introdução ao Laravel, rotas e controllers.
- Módulo 2 – Views e Dados: Views com Blade, banco de dados e migrations, Eloquent ORM, CRUD completo.
- Módulo 3 – Segurança e APIs: Autenticação e autorização, APIs REST com Laravel, segurança em aplicações web, testes automatizados.
- Módulo 4 – Produção: Upload de arquivos e storage, filas/eventos/jobs, Docker e deploy, e o projeto final com boas práticas.
💡 Dicas de Sucesso
- Domine o Eloquent antes do resto: é o coração do Laravel — entender relacionamentos e query builder acelera tudo depois.
- Use migrations sempre: nunca altere o banco manualmente em projetos Laravel, versione o schema junto com o código.
- Leia a documentação oficial: a doc do Laravel é excelente e está sempre atualizada — vale mais que qualquer atalho.
Pronto para começar? Ir para Aula 01
Plano de Ensino 🧭
Curso: Desenvolvimento Web com PHP e Laravel
Público-alvo: Estudantes de ADS, Ciência da Computação e Desenvolvedores de Software
Carga Horária: 20 Aulas (80 Horas Teórico-Práticas)
🎯 1. Objetivos do Curso
- Compreender os fundamentos conceituais e arquiteturais de Desenvolvimento Web com PHP e Laravel.
- Aplicar padrões de projeto, sintaxe moderna e boas práticas da indústria.
- Desenvolver soluções completas através de exercícios práticos e desafios de projeto.
📚 2. Cronograma de Aulas (Matriz de 20 Semanas)
| Aula | Tema Central | Atividades e Entregas |
|---|---|---|
| 01 | Introdução ao PHP Moderno | Teoria, Prática Guiada, Quiz e Exercícios |
| 02 | Fundamentos de PHP e POO ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 03 | Introdução ao Framework Laravel | Teoria, Prática Guiada, Quiz e Exercícios |
| 04 | Rotas e Controllers ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 05 | Views com Blade | Teoria, Prática Guiada, Quiz e Exercícios |
| 06 | Banco de Dados e Migrations ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 07 | Eloquent ORM | Teoria, Prática Guiada, Quiz e Exercícios |
| 08 | CRUD Completo ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 09 | Autenticação e Autorização | Teoria, Prática Guiada, Quiz e Exercícios |
| 10 | APIs REST com Laravel | Teoria, Prática Guiada, Quiz e Exercícios |
| 11 | Segurança em Aplicações Web ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 12 | Testes Automatizados | Teoria, Prática Guiada, Quiz e Exercícios |
| 13 | Upload de Arquivos e Storage | Teoria, Prática Guiada, Quiz e Exercícios |
| 14 | Filas, Eventos e Jobs | Teoria, Prática Guiada, Quiz e Exercícios |
| 15 | Docker e Deploy | Teoria, Prática Guiada, Quiz e Exercícios |
| 16 | Projeto Final e Boas Práticas | Teoria, Prática Guiada, Quiz e Exercícios |
| 17 | Laravel 10+ com Arquitetura de Serviços e DTOs | Teoria, Prática Guiada, Quiz e Exercícios |
| 18 | Queues, Jobs e Processamento em Segundo Plano | Teoria, Prática Guiada, Quiz e Exercícios |
| 19 | Testes Automatizados com Pest PHP e TDD | Teoria, Prática Guiada, Quiz e Exercícios |
| 20 | Projeto Capstone: Aplicação Web Laravel Robusta Autônoma | Teoria, Prática Guiada, Quiz e Exercícios |
🧠 3. Metodologia de Ensino
- Teoria Fundamentada: Aulas com conceitos detalhados, diagramas arquiteturais e sintaxe de referência.
- Ciclo Teoria ⇄ Prática: Cada aula conta com Quiz Interativo (10 questões) para validação imediata, Lista de Exercícios Sanfonados (com Gabarito Explicado) e Desafio de Projeto Prático.
- Laboratório Contínuo: Ambientes configurados passo a passo na seção de Setups da plataforma.
💼 4. Competências e Perfil Desenvolvido
- Dominar as ferramentas e fluxos de desenvolvimento de Desenvolvimento Web com PHP e Laravel.
- Resolver problemas técnicos de alta complexidade com código limpo e performático.
- Construir portfólio prático com 20 projetos aplicados.
📊 5. Critérios de Avaliação
- 20 Listas de Exercícios: Resolução individual dividida em Básico, Intermediário e Desafio.
- 20 Quizzes Interativos: Validação formativa com feedback imediato via JavaScript.
- 20 Desafios de Projetos: Aplicações práticas consolidando o aprendizado de cada unidade.
Aulas
Aula 01 - Introdução ao PHP Moderno 🐘
🎯 Objetivo da Aula
Nesta aula, vamos entender a evolução do PHP, por que ele continua sendo um gigante da web moderna e como preparar o ambiente para o desenvolvimento profissional utilizando o Composer e padrões PSR.
🚀 A Evolução do PHP
O PHP não é mais aquela linguagem "bagunçada" dos anos 2000. Desde a versão 7 e, especialmente na versão 8.x, o PHP se tornou uma linguagem robusta, performática e com tipagem forte.
O que mudou?
- Performance: O PHP 8 é significativamente mais rápido que as versões anteriores.
- Modernidade: Introdução de Attributes, Union Types, Match Expression e JIT (Just-In-Time) compiler.
- Ecossistema: O Composer revolucionou a forma como gerenciamos pacotes.
📊 Ecossistema PHP Moderno
Veja abaixo como as peças se encaixam no desenvolvimento moderno:
graph TD
A[Desenvolvedor] --> B[PHP 8.x]
B --> C[Composer]
C --> D[Packagist]
D --> E[Laravel / Symfony / Slim]
E --> F[Aplicação Web Moderna]
📦 Composer: O Gerenciador de Dependências
O Composer é indispensável. Ele gerencia bibliotecas externas e garante que o seu projeto seja portável.
Comandos Comuns
Use o terminal para gerenciar seu projeto:
📜 Padrões de Código: PSR
As PSRs (PHP Standard Recommendations) são recomendações criadas pelo PHP-FIG para garantir que códigos de diferentes desenvolvedores e frameworks funcionem bem juntos.
Principais PSRs
- PSR-1: Padrões básicos de codificação.
- PSR-12: Guia de estilo de código (estendido).
- PSR-4: Autoloader (mapeamento de namespaces para arquivos).
🧠 Conceitos Chave
Tipagem Forte no PHP 8
Agora podemos (e devemos) definir tipos para garantir a segurança do código:
<?php
function soma(int $a, int $b): int {
return $a + $b;
}
echo soma(10, 20); // 30
// echo soma("10", "vinte"); // Erro de Tipo!
🛠️ Exercício Prático
- Verifique a versão do seu PHP instalado:
php -v. - Crie um arquivo
index.phpe implemente uma função que receba um nome (string) e retorne uma saudação formatada. - Inicialize um projeto com
composer init.
🚀 Mini-Projeto da Aula
Gerenciador de Dependências Simples:
Crie um script que utilize a biblioteca vlucas/phpdotenv (via Composer) para ler variáveis de ambiente de um arquivo .env e exibi-las na tela de forma segura.
Aula 02 - Fundamentos de PHP e POO 🏗️
🎯 Objetivo da Aula
Aprofundar nos fundamentos da linguagem PHP, revisando estruturas de controle, tipos de dados e mergulhando na Programação Orientada a Objetos (POO) moderna aplicada ao ecossistema Laravel.
💎 Estruturas Essenciais
O PHP 8 trouxe melhorias sintáticas que tornam o código mais limpo e seguro.
Match Expression (PHP 8.0+)
O match é uma alternativa poderosa e mais segura ao switch.
🧩 Programação Orientada a Objetos (POO)
O Laravel é construído totalmente sobre POO. Entender classes, objetos, herança e interfaces é fundamental.
Anatomia de uma Classe Moderna
No PHP 8.2+, podemos usar classes readonly e promoção de propriedades no construtor.
<?php
namespace App\Models;
class Usuario {
// Promoção de Propriedade no Construtor
public function __construct(
public string $nome,
public string $email,
private int $idade
) {}
public function apresentar(): string {
return "Olá, eu sou {$this->nome}.";
}
}
📊 Diagrama de Classes (Exemplo)
Veja como organizamos a estrutura de herança em um sistema de ensino:
classDiagram
class Pessoa {
+String nome
+String email
+falar()
}
class Aluno {
+String matricula
+estudar()
}
class Professor {
+String especialidade
+ensinar()
}
Pessoa <|-- Aluno
Pessoa <|-- Professor
📂 Namespaces e Autoloading
Namespaces resolvem o conflito de nomes de classes e, junto com a PSR-4, permitem que o Composer carregue seus arquivos automaticamente.
🧠 Blocos de Destaque
Atenção com Tipagem
Sempre ative o modo estrito no topo dos seus arquivos para evitar coerções inesperadas:
declare(strict_types=1);
🛠️ Exercícios Progressivos
- Básico: Crie uma classe
Carrocom propriedadesmarcaemodelo. - Intermediário: Implemente um método que calcule a idade de um objeto
Pessoabaseado no ano de nascimento. - Desafio: Crie uma
InterfacechamadaNotificacaoe duas classesEmaileSMSque a implementem.
🚀 Mini-Projeto da Aula
Sistema de Cadastro Simples (CLI):
Desenvolva uma pequena aplicação de terminal onde o usuário pode cadastrar "Produtos" em uma lista (array de objetos). Use POO para representar o Produto e uma classe Repositorio para gerenciar a lista.
Aula 03 - Introdução ao Framework Laravel 🚀
🎯 Objetivo da Aula
Conhecer o Laravel, o framework PHP mais popular do mundo. Vamos entender sua filosofia, instalar nosso primeiro projeto e explorar a estrutura de diretórios que o torna tão organizado e escalável.
🌟 O que é o Laravel?
O Laravel é um framework web focado na experiência do desenvolvedor (DX). Ele segue o padrão MVC (Model-View-Controller) e fornece ferramentas prontas para quase tudo: autenticação, banco de dados, filas, e-mails, etc.
Filosofia
O Laravel prioriza a "felicidade do programador" através de uma sintaxe expressiva e elegante.
🏗️ Estrutura de Diretórios
Ao criar um projeto Laravel, você verá muitas pastas. As principais são:
| Pasta | Descrição |
|---|---|
app/ |
Onde mora a lógica da sua aplicação (Controllers, Models). |
config/ |
Arquivos de configuração global. |
database/ |
Migrations, Seeders e Factories. |
public/ |
Ponto de entrada (index.php) e arquivos estáticos. |
resources/ |
Views (Blade), Sass e JavaScript. |
routes/ |
Onde todas as rotas da aplicação são definidas. |
📊 Fluxo de Requisição no Laravel
Entenda o caminho que uma URL percorre até exibir o conteúdo:
sequenceDiagram
participant U as Usuário
participant R as Rotas
participant C as Controller
participant M as Model
participant V as View
U->>R: Acessa uma URL
R->>C: Chama o método do Controller
C->>M: Solicita dados
M-->>C: Retorna dados do Banco
C->>V: Passa dados para o Blade
V-->>U: Exibe a página HTML
🛠️ Instalação e Primeiro Setup
A maneira mais moderna de instalar o Laravel é via Artisan ou Installer.
🧠 Conceito: O Artisan
O artisan é a interface de linha de comando (CLI) do Laravel. Ele automatiza tarefas repetitivas.
Dica de Produtividade
Use php artisan list para ver todos os comandos disponíveis. Você vai usá-lo o tempo todo!
🛠️ Exercícios
- Instale o Laravel em sua máquina e execute o servidor.
- Localize a pasta
routese tente criar uma rota que retorne seu nome. - Explore o arquivo
.enve identifique as configurações de banco de dados.
🚀 Mini-Projeto da Aula
Minha Primeira Home Page:
Altere a view padrão do Laravel (welcome.blade.php), adicione um componente Blade simples e exiba informações dinâmicas vindas de uma variável passada pela rota no arquivo web.php.
Aula 04 - Rotas e Controllers 🛤️
🎯 Objetivo da Aula
Dominar o sistema de roteamento do Laravel e entender como os Controllers organizam a lógica de resposta às requisições dos usuários.
📍 Sistema de Rotas
As rotas mapeiam URLs para ações. No Laravel, as rotas web ficam em routes/web.php.
Tipos de Rotas
Podemos responder a diferentes verbos HTTP:
use Illuminate\Support\Facades\Route;
Route::get('/contato', function () {
return 'Página de Contato';
});
Route::post('/salvar', function () {
// Processa dados enviados
});
🕹️ Controllers
Em vez de colocar lógica nas rotas, usamos Controllers para manter o código limpo.
Criando um Controller via Artisan
Vinculando Rota ao Controller
use App\Http\Controllers\ProdutoController;
Route::get('/produtos', [ProdutoController::class, 'index']);
📊 Fluxo Rota -> Controller
graph LR
A[URL: /usuarios] --> B{Router}
B --> C[UserController]
C --> D[Método: index]
D --> E[Resposta: View/JSON]
🔗 Parâmetros de Rota
Podemos capturar dados diretamente da URL:
// Rota com parâmetro obrigatório
Route::get('/perfil/{id}', function ($id) {
return "Usuário ID: " . $id;
});
🛡️ Middlewares
Middlewares agem como "filtros" entre a requisição e a resposta (ex: verificar se o usuário está logado).
Segurança
Nunca deixe rotas administrativas expostas sem o middleware auth.
🧠 Blocos de Destaque
Validação Básica
O Laravel permite validar dados diretamente no Controller usando o método $request->validate().
🛠️ Exercícios Progressivos
- Básico: Crie uma rota que receba um nome e retorne "Bem-vindo, [nome]".
- Intermediário: Crie um
UserControllere uma rota que aponte para o métodoshow. - Desafio: Crie um grupo de rotas com o prefixo
/admine proteja-as simulando um middleware.
🚀 Mini-Projeto da Aula
Gerenciador de Links:
Crie um sistema de rotas dinâmicas que redirecione o usuário para diferentes redes sociais baseado no parâmetro passado na URL (ex: /social/github -> redireciona para seu perfil). Use um Controller para lidar com os redirecionamentos.
Aula 05 - Views com Blade 🎨
🎯 Objetivo da Aula
Aprender a criar interfaces dinâmicas utilizando o Blade, o poderoso motor de templating do Laravel. Vamos explorar layouts, componentes e diretivas que facilitam a criação de páginas reutilizáveis.
🖌️ O que é o Blade?
O Blade é um motor de templates simples, mas poderoso. Ao contrário de outros motores PHP, o Blade não impede que você use código PHP puro nas suas views, mas fornece atalhos elegantes para tarefas comuns.
Extensão de Arquivo
Todos os arquivos Blade devem ter a extensão .blade.php e são armazenados em resources/views.
🏗️ Layouts e Herança
Em vez de repetir o cabeçalho e o rodapé em toda página, criamos um layout base.
Layout Base (app.blade.php)
<html>
<head>
<title>Meu Site - @yield('title')</title>
</head>
<body>
<nav>Menu Principal</nav>
<div class="content">
@yield('content')
</div>
</body>
</html>
Usando o Layout (home.blade.php)
@extends('layouts.app')
@section('title', 'Página Inicial')
@section('content')
<h1>Bem-vindo à Home!</h1>
@endsection
📊 Fluxo de Renderização do Blade
graph LR
A[Controller] --> B[Passa Dados]
B --> C{Blade Engine}
C --> D[Layouts/Seções]
D --> E[Componentes]
E --> F[HTML Final]
📜 Diretivas do Blade
As diretivas são atalhos que começam com @.
| Diretiva | Descrição |
|---|---|
@if, @else |
Condicionais simples. |
@foreach |
Loops para arrays e coleções. |
@auth, @guest |
Verificação de autenticação. |
@include |
Inclui outra view parcial. |
🧩 Componentes Blade
Componentes são pedaços de UI reutilizáveis (como um botão ou um card).
Uso na view:
🧠 Blocos de Destaque
Dica de Design
O Laravel se integra perfeitamente com Tailwind CSS ou Bootstrap. Você pode usar as classes desses frameworks diretamente dentro dos seus arquivos Blade.
🛠️ Exercícios Progressivos
- Básico: Crie uma view que exiba uma lista de nomes usando
@foreach. - Intermediário: Crie um layout base com uma seção lateral (sidebar) e uma home que o herde.
- Desafio: Crie um componente
Cardque receba um título e um conteúdo viaslot.
🚀 Mini-Projeto da Aula
Dashboard de Perfil: Crie um layout mestre e uma página de perfil que exiba informações de um usuário (nome, bio, skills). As skills devem ser iteradas a partir de um array passado pelo Controller e o design deve usar um componente Blade para os cards.
Aula 06 - Banco de Dados e Migrations 🗄️
🎯 Objetivo da Aula
Entender como o Laravel gerencia o esquema do banco de dados através das Migrations. Vamos aprender a versionar nosso banco e popular dados iniciais com Seeders e Factories.
🛡️ Migrations: O Git do seu Banco
Migrations permitem que você defina a estrutura da tabela em código PHP, garantindo que todos os desenvolvedores do time tenham a mesma estrutura de banco.
Criando uma Migration
Definindo a Estrutura
public function up(): void
{
Schema::create('produtos', function (Blueprint $table) {
$table->id();
$table->string('nome');
$table->decimal('preco', 8, 2);
$table->timestamps();
});
}
🔄 Comandos Essenciais
📊 Fluxo de Versão do Banco
graph TD
A[Migration 1: Users] --> B[Migration 2: Posts]
B --> C[Migration 3: Comments]
C --> D{Artisan Migrate}
D --> E[Tabela Users]
D --> F[Tabela Posts]
D --> G[Tabela Comments]
🌲 Seeders e Factories
- Seeders: Servem para inserir dados específicos ou fixos (ex: um usuário admin).
- Factories: Servem para gerar milhares de dados de teste aleatórios usando a biblioteca Faker.
Exemplo de Factory
User::factory()->count(50)->create(); - Isso cria 50 usuários fictícios no banco em segundos!
🧠 Blocos de Destaque
Atenção com .env
Certifique-se de configurar corretamente as credenciais (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD) no seu arquivo .env antes de rodar as migrations.
🛠️ Exercícios Progressivos
- Básico: Crie uma migration para uma tabela
categoriascom apenasidenome. - Intermediário: Adicione uma coluna
descricaona tabelaprodutosusando uma nova migration. - Desafio: Crie um Seeder que cadastre 10 categorias automaticamente ao rodar o comando
db:seed.
🚀 Mini-Projeto da Aula
Cenário de Loja Virtual:
Crie a estrutura de tabelas para um e-commerce simples: produtos, categorias e pedidos. Execute as migrations e use uma Factory para popular o banco com 100 produtos de teste para que possamos testar a performance no futuro.
Aula 07 - Eloquent ORM 💎
🎯 Objetivo da Aula
Dominar o Eloquent, o ORM (Object-Relational Mapper) do Laravel. Vamos aprender a interagir com o banco de dados usando objetos PHP, sem escrever uma única linha de SQL manual, e entender como gerenciar relacionamentos complexos.
🐘 O que é o Eloquent?
O Eloquent transforma tabelas do banco em classes PHP (Models).
- Uma Tabela produtos vira uma Classe Produto.
- Uma Linha da tabela vira um Objeto dessa classe.
Consultas Básicas
// Buscar todos os produtos
$produtos = Produto::all();
// Buscar pelo ID
$produto = Produto::find(1);
// Criar novo registro
$novo = Produto::create(['nome' => 'Teclado', 'preco' => 150.00]);
🔗 Relacionamentos
Esta é a parte mais poderosa do Eloquent.
| Tipo | Método | Exemplo |
|---|---|---|
| 1 para 1 | hasOne / belongsTo |
Usuário e Perfil. |
| 1 para N | hasMany / belongsTo |
Post e Comentários. |
| N para N | belongsToMany |
Alunos e Disciplinas. |
Exemplo em Código (1:N)
class Post extends Model {
public function comentarios() {
return $this->hasMany(Comentario::class);
}
}
📊 Estrutura de Relacionamento
erDiagram
CATEGORIA ||--o{ PRODUTO : possui
PRODUTO ||--o{ ITEM_PEDIDO : contem
CLIENTE ||--o{ PEDIDO : faz
🔍 Scopes e Soft Deletes
- Scopes: Permitem encapsular lógica de consulta (ex:
Produto::ativos()->get()). - Soft Deletes: Em vez de apagar do banco, o Laravel marca como "excluído" (deleted_at), permitindo recuperação posterior.
Segurança
O Eloquent protege automaticamente contra SQL Injection usando prepared statements.
🧠 Blocos de Destaque
Convenção sobre Configuração
O Eloquent assume que sua tabela é o plural do nome da classe (ex: Model User -> Tabela users). Se fugir desse padrão, você deve definir protected $table.
🛠️ Exercícios Progressivos
- Básico: Crie um Model
Clientee busque todos os clientes ordenados pelo nome. - Intermediário: Implemente um relacionamento onde um
Pedidopertence a umCliente. - Desafio: Crie um Query Scope que retorne apenas produtos com preço acima de R$ 100,00.
🚀 Mini-Projeto da Aula
Sistema de Blog Relacional:
Crie os Models Post e Comentario. Implemente o relacionamento entre eles e crie uma pequena interface (via Controller e Rota) que exiba um post específico e todos os seus comentários logo abaixo, garantindo que tudo seja carregado via Eloquent.
Aula 08 - CRUD Completo 🛠️
🎯 Objetivo da Aula
Unir tudo o que aprendemos até agora (Rotas, Controllers, Views, Migrations e Eloquent) para construir um CRUD completo (Create, Read, Update, Delete). Vamos aprender a lidar com formulários, validação e mensagens de feedback.
📋 O que é um CRUD?
É o conjunto das 4 operações básicas de qualquer sistema de informação: 1. Create (Criar/Inserir) 2. Read (Ler/Listar) 3. Update (Atualizar) 4. Delete (Excluir)
🏗️ Resource Controllers
O Laravel facilita isso com um comando que já cria os métodos padrões:
Isso gera métodos como index, create, store, edit, update e destroy.
📊 Fluxo de um Registro no CRUD
stateDiagram-v2
[*] --> Lista: index()
Lista --> Form_Criar: create()
Form_Criar --> Lista: store() (POST)
Lista --> Form_Editar: edit(id)
Form_Editar --> Lista: update(id) (PUT)
Lista --> [*]: destroy(id) (DELETE)
🛡️ Validação de Dados
Nunca confie no que o usuário envia. Use o motor de validação do Laravel:
public function store(Request $request) {
$request->validate([
'nome' => 'required|min:3|max:255',
'preco' => 'required|numeric',
]);
Produto::create($request->all());
return redirect()->route('produtos.index')->with('success', 'Criado!');
}
📄 Paginação
Ter 10.000 registros em uma única página quebra o navegador. O Laravel resolve isso com um método:
$produtos = Produto::paginate(10);
Na view: {% raw %}{{ $produtos->links() }} - Pronto, botões de paginação automáticos!
🧠 Blocos de Destaque
Token CSRF
Todo formulário HTML no Laravel deve conter a diretiva @csrf para evitar ataques de Cross-Site Request Forgery. Caso contrário, o Laravel retornará um erro 419.
🛠️ Exercícios Progressivos
- Básico: Crie a rota de recurso
Route::resource('tarefas', TarefaController::class). - Intermediário: Implemente a função
destroycom uma mensagem de confirmação (flash message). - Desafio: Crie uma validação personalizada que impeça nomes repetidos no banco.
🚀 Mini-Projeto da Aula
Gerenciador de Tarefas (To-Do List): Construa um sistema onde o usuário possa cadastrar tarefas, marcar como concluídas, editar a descrição e excluir. Use paginação para exibir 5 tarefas por vez e garanta que todos os campos sejam validados antes de salvar.
Aula 09 - Autenticação e Autorização 🔐
🎯 Objetivo da Aula
Aprender a proteger sua aplicação utilizando os sistemas de autenticação nativos do Laravel. Vamos explorar o Laravel Breeze para um setup rápido e entender a diferença entre Autenticação (quem você é) e Autorização (o que você pode fazer).
🚪 Autenticação: Laravel Breeze
O Laravel não reinventa a roda. Ele fornece "scaffoldings" prontos que já vêm com login, registro, recuperação de senha e verificação de e-mail.
Instalando o Breeze
📊 Fluxo de Autenticação
sequenceDiagram
participant U as Usuário
participant L as Página Login
participant B as Backend (Auth)
participant D as Banco de Dados
U->>L: Digita e-mail/senha
L->>B: Envia requisição POST
B->>D: Verifica credenciais
D-->>B: Credenciais Corretas
B-->>U: Inicia Sessão e Redireciona
🛡️ Autorização: Gates e Policies
Depois que o usuário está logado, precisamos saber se ele tem permissão para realizar certas ações.
- Gates: São úteis para ações simples que não estão ligadas a um model específico.
- Policies: São classes que organizam a lógica de autorização para um model específico (ex: PostPolicy).
Exemplo de Policy
public function update(User $user, Post $post)
{
// Apenas o dono do post pode editá-lo
return $user->id === $post->user_id;
}
🚦 RBAC (Role-Based Access Control)
O controle de acesso baseado em funções permite que você defina perfis como "Admin", "Editor" e "Usuário Comercial", garantindo permissões granulares.
Dica de Segurança
Use o middleware can:update,post nas suas rotas para aplicar as policies automaticamente.
🧠 Blocos de Destaque
Confirmação de Senha
O Laravel possui um middleware chamado password.confirm que exige que o usuário digite a senha novamente antes de acessar áreas sensíveis do sistema.
🛠️ Exercícios Progressivos
- Básico: Instale o Laravel Breeze em um projeto limpo e crie um usuário de teste.
- Intermediário: Proteja uma rota de
/dashboardpara que apenas usuários logados possam entrar. - Desafio: Crie um Gate chamado
admin-onlyque permita o acesso apenas se o e-mail do usuário terminar em@admin.com.
🚀 Mini-Projeto da Aula
Sistema de Blog Protegido: Implemente um sistema onde todos podem ler os posts, mas apenas usuários autenticados podem comentar. Além disso, garanta que um usuário só possa excluir o seu próprio comentário através de uma Policy.
Aula 10 - APIs REST com Laravel 🌐
🎯 Objetivo da Aula
Transformar sua aplicação Laravel em um backend poderoso para aplicações modernas (Mobile, SPA). Vamos aprender a criar endpoints JSON, usar API Resources para formatar respostas e entender o versionamento de APIs.
📡 O que é uma API REST?
REST é um conjunto de princípios que permite que sistemas diferentes se comuniquem via HTTP usando formatos padrão como JSON. No Laravel, as rotas de API ficam em routes/api.php e não possuem estado (stateless).
Sem Sessão
Diferente das rotas web, as rotas de API não usam cookies de sessão por padrão. Elas usam tokens (como JWT ou Sanctum).
📦 API Resources
Eles servem como uma camada de transformação entre seus Models do banco e a resposta JSON que o cliente recebe.
Criando um Resource
Formatando a Resposta
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'nome_do_produto' => $this->nome,
'preco_formatado' => 'R$ ' . number_format($this->preco, 2, ',', '.'),
'links' => [
'self' => route('api.produtos.show', $this->id),
]
];
}
📊 Fluxo de uma Requisição API
graph LR
A[Cliente: Mobile/React] -->|GET /api/users| B[Laravel Router]
B --> C[UserController]
C --> D[Eloquent Model]
D --> E[API Resource]
E -->|JSON| A
🔄 Respostas HTTP e Status Codes
É fundamental retornar o código correto para que o cliente saiba o que aconteceu: - 200 OK: Sucesso. - 201 Created: Registro criado com sucesso. - 422 Unprocessable Entity: Erro de validação. - 401 Unauthorized: Falta de autenticação.
🧠 Blocos de Destaque
Versionamento
Sempre versione sua API (ex: /api/v1/produtos). Isso permite que você faça mudanças drásticas sem quebrar os aplicativos antigos dos usuários.
🛠️ Exercícios Progressivos
- Básico: Crie uma rota em
api.phpque retorne uma lista de nomes em formato JSON. - Intermediário: Crie um Resource para o model
Tarefae oculte campos sensíveis comopasswordoudeleted_at. - Desafio: Implemente o método
storeem um Controller de API que valide os dados e retorne o status201com o objeto criado.
🚀 Mini-Projeto da Aula
Catálogo Digital API: Desenvolva uma API para um catálogo de produtos. O projeto deve ter endpoints para listar produtos (filtrados por categoria), ver detalhes de um produto e criar novos produtos (protegido por um token simples). Use API Resources para garantir que a resposta JSON seja elegante e profissional.
Aula 11 - Segurança em Aplicações Web 🛡️
🎯 Objetivo da Aula
Entender as principais vulnerabilidades da web (OWASP Top 10) e como o Laravel nos protege "out of the box". Vamos aprender a configurar proteções contra CSRF, XSS e SQL Injection, além de boas práticas de hash de senhas.
💣 Vulnerabilidades Comuns
1. CSRF (Cross-Site Request Forgery)
Um ataque que força um usuário autenticado a executar ações indesejadas.
- Como o Laravel resolve: Através do middleware de verificação de Token CSRF (@csrf).
2. XSS (Cross-Site Scripting)
Injeção de scripts maliciosos em páginas visualizadas por outros usuários.
- Como o Laravel resolve: O Blade escapa automaticamente qualquer conteúdo exibido com {% raw %}{{ $variavel }}.
3. SQL Injection
Injeção de comandos SQL através de campos de entrada. - Como o Laravel resolve: O Eloquent e o Query Builder usam prepared statements (PDO), tornando a injeção impossível.
📊 Ciclo de Proteção do Laravel
graph TD
A[Usuário Externo] --> B{Firewall/WAF}
B --> C{Laravel Middleware}
C -->|Check CSRF| D[Controller]
D -->|Hash Senhas| E[Banco de Dados]
D -->|Escape HTML| F[Interface View]
🔑 Gerenciamento de Senhas
Nunca salve senhas em texto puro! O Laravel utiliza o algoritmo Bcrypt ou Argon2 por padrão.
use Illuminate\Support\Facades\Hash;
// Criando o Hash
$password = Hash::make('minha-senha-segura');
// Verificando
if (Hash::check('minha-senha-segura', $hashedPassword)) {
// Senha correta
}
🛡️ Boas Práticas OWASP
- HTTPS em tudo: Use o middleware
App::forceScheme('https')em produção. - Headers de Segurança: Configure headers como
X-Frame-OptionseContent-Security-Policy. - Throttling: Limite o número de tentativas de login para evitar ataques de força bruta.
🧠 Blocos de Destaque
Atenção: Exposição de Dados
Nunca deixe a variável APP_DEBUG=true no seu arquivo .env em ambiente de produção. Isso pode expor senhas de banco e chaves de API em caso de erro.
🛠️ Exercícios Progressivos
- Básico: Tente enviar um formulário POST sem o
@csrfe observe o erro 419. - Intermediário: Use a função
Hash::makepara criar 3 senhas diferentes e tente compará-las manualmente. - Desafio: Implemente um "Rate Limiter" em uma rota de contato para que o mesmo IP só possa enviar 1 mensagem a cada minuto.
🚀 Mini-Projeto da Aula
Auditoria de Segurança: Pegue um projeto anterior e aplique um "Checklist de Segurança": esconda campos sensíveis nos Resources, ative o Rate Limiting nas APIs, garanta que todas as senhas sejam hasheadas e verifique se o modo debug está desativado simulando um ambiente de produção.
Aula 12 - Testes Automatizados 🧪
🎯 Objetivo da Aula
Descobrir por que desenvolvedores seniores escrevem testes. Vamos aprender a utilizar o PHPUnit (embutido no Laravel) para criar testes de unidade e testes de funcionalidade (feature), garantindo que sua aplicação não quebre após cada mudança.
🧬 Por que testar?
- Confiança: Você sabe que seu código funciona.
- Refatoração: Você pode mudar o código antigo sem medo de estragar o que já estava pronto.
- Documentação: Os testes servem como um manual de como o sistema deve se comportar.
🛠️ Tipos de Testes no Laravel
1. Testes de Unidade (Unit)
Testam uma pequena parte isolada do código (ex: uma função matemática ou uma classe simples), sem tocar no banco de dados.
2. Testes de Funcionalidade (Feature)
Testam uma funcionalidade completa, simulando uma requisição HTTP, passando pelo controller, banco de dados e verificando a resposta.
📊 Pirâmide de Testes
graph TD
A[Unit Tests - Muitos/Rápidos] --- B[Feature Tests - Médio]
B --- C[E2E/Browser Tests - Poucos/Lentos]
💻 Criando seu primeiro teste
Exemplo de Teste de Feature:
public function test_usuario_pode_ver_a_home()
{
$response = $this->get('/');
$response->assertStatus(200);
}
🏗️ TDD (Test Driven Development)
O ciclo do TDD consiste em: 1. Red: Escreva um teste que falha (porque a funcionalidade ainda não existe). 2. Green: Escreva o código mínimo para o teste passar. 3. Refactor: Melhore o código mantendo o teste passando.
🧠 Blocos de Destaque
Banco de Dados de Teste
O Laravel usa automaticamente um banco sqlite :memory: se configurado no phpunit.xml, tornando os testes extremamente rápidos!
🛠️ Exercícios Progressivos
- Básico: Crie um teste que verifique se a rota de login está acessível (Status 200).
- Intermediário: Crie um teste que tente cadastrar um produto sem nome e verifique se há um erro de validação.
- Desafio: Use o método
$this->actingAs($user)para testar se apenas usuários logados podem acessar a página administrativa.
🚀 Mini-Projeto da Aula
Calculadora de Frete Testada: Desenvolva uma classe simples que calcula o frete baseado na distância. Em seguida, escreva pelo menos 5 testes de unidade cobrindo diferentes cenários: frete grátis para curtas distâncias, frete fixo, erro para distâncias negativas, etc.
Aula 13 - Upload de Arquivos e Storage 📂
🎯 Objetivo da Aula
Aprender a gerenciar arquivos no Laravel de forma segura e escalável. Vamos explorar o sistema de Filesystem, realizar uploads de imagens com validação e entender a diferença entre armazenamento local e em nuvem (S3).
🏗️ O Sistema de Storage
O Laravel fornece uma camada de abstração que permite que você mude de "armazenamento local" para "Amazon S3" mudando apenas uma linha no arquivo .env.
Configuração
O arquivo de configuração é o config/filesystems.php. Por padrão, o disco public é usado para arquivos que devem ser acessíveis pela web.
📊 Fluxo de Upload
sequenceDiagram
participant U as Usuário
participant F as Formulário HTML
participant C as Controller
participant S as Storage (Disco)
U->>F: Seleciona arquivo
F->>C: Envia via POST (multipart)
C->>C: Valida tamanho/extensão
C->>S: Salva arquivo
S-->>C: Retorna o caminho (path)
C->>U: Exibe confirmação
💻 Implementando o Upload
No Controller, o processo é muito simples:
public function store(Request $request) {
$request->validate([
'foto' => 'required|image|mimes:jpeg,png,jpg|max:2048',
]);
if ($request->hasFile('foto')) {
$path = $request->file('foto')->store('avatares', 'public');
// Salva o $path no banco de dados
}
}
Visualizando o arquivo:
{% raw %}<img src="{{ asset('storage/' . $usuario->foto) }}">
🔍 Manipulação de Imagens
Para redimensionar imagens automaticamente, recomendamos usar bibliotecas como a Intervention Image.
Dica de Performance
Nunca salve o arquivo binário diretamente no banco de dados (BLOB). Salve apenas o caminho (string) e mantenha o arquivo no sistema de arquivos.
🧠 Blocos de Destaque
Segurança
Sempre valide as extensões dos arquivos. Permitir o upload de arquivos .php ou .exe pode comprometer servidor inteiro!
🛠️ Exercícios Progressivos
- Básico: Crie o link simbólico de storage e coloque uma imagem manualmente na pasta para testar o acesso via URL.
- Intermediário: Crie um formulário que receba um PDF (currículo) e salve-o em uma pasta privada (não acessível via link simbólico).
- Desafio: Implemente uma funcionalidade que apague o arquivo antigo do disco quando o usuário enviar uma nova foto de perfil.
🚀 Mini-Projeto da Aula
Galeria de Fotos Minimalista: Desenvolva um sistema onde usuários autenticados possam subir fotos com títulos. A aplicação deve exibir uma galeria de miniaturas e permitir que o usuário baixe a imagem original através de um link seguro.
Aula 14 - Filas, Eventos e Jobs ⚡
🎯 Objetivo da Aula
Aprender a tornar sua aplicação muito mais rápida movendo tarefas pesadas para o "background". Vamos explorar Jobs, Queues (filas) e o sistema de Eventos/Listeners para criar uma arquitetura desacoplada.
🕰️ O Problema das Tarefas Lentas
Imagine que o usuário se cadastra e você precisa enviar um e-mail de boas-vindas. Se o servidor de e-mail demorar 5 segundos, o usuário ficará esperando com a tela travada. Solução: Colocar o envio de e-mail em uma fila e responder ao usuário imediatamente.
📊 Processamento Assíncrono com Filas
sequenceDiagram
participant U as Usuário
participant C as Controller
participant Q as Fila (Redis/Banco)
participant W as Worker (Background)
U->>C: Clica em "Comprar"
C->>Q: Adiciona Job "Gerar PDF"
C-->>U: "Sua compra está sendo processada!"
Note over Q,W: O Worker pega o job da fila
W->>W: Gera o PDF pesado
W->>U: Envia e-mail com o PDF
⚒️ Criando um Job
Como despachar o job:
ProcessarRelatorio::dispatch($dados);
🔔 Eventos e Listeners
Eventos permitem que partes diferentes do sistema "ouçam" quando algo importante acontece.
- Evento: PedidoRealizado.
- Listeners: EnviarEmailCliente, BaixarEstoque, NotificarLogistica.
Desacoplamento
O Controller de Pedidos não precisa saber como o estoque é baixado. Ele apenas dispara o evento.
🧠 Blocos de Destaque
Cache com Redis
Para aplicações de alta performance, use o Redis como driver de fila e cache. Ele é extremamente rápido porque armazena os dados na memória RAM.
🛠️ Exercícios Progressivos
- Básico: Configure o driver de fila para
databaseno seu.enve rode a migrationqueue:batches-table. - Intermediário: Crie um Job que apenas escreva uma mensagem no log (
Log::info) e despache-o através de uma rota. - Desafio: Implemente um Evento que seja disparado sempre que um produto for criado, enviando um e-mail fictício para o administrador.
🚀 Mini-Projeto da Aula
Relatório por E-mail: Crie um botão "Gerar Relatório de Vendas". Ao clicar, o sistema deve despachar um Job que simule um processamento pesado (sleep de 10 segundos) e, ao terminar, registre no log que o relatório está pronto. O usuário deve receber uma mensagem instantânea dizendo: "Seu relatório está sendo gerado e será enviado em breve".
Aula 15 - Docker e Deploy 🐳🚀
🎯 Objetivo da Aula
Preparar sua aplicação para o mundo real. Vamos aprender a "containerizar" o Laravel usando Docker, configurar o ambiente de produção com o arquivo .env e entender as estratégias de deploy em VPS ou Cloud.
🐳 Docker e Laravel Sail
O Docker garante que a aplicação funcione exatamente igual na sua máquina e no servidor. O Laravel fornece o Sail, uma interface CLI leve para interagir com o Docker.
📊 Estrutura de Containers
graph TD
A[Nginx/Apache] --> B[Laravel PHP-FPM]
B --> C[MySQL Database]
B --> D[Redis Cache/Queue]
B --> E[Mailpit (Teste de Email)]
⚙️ Configuração de Produção
No servidor, algumas regras mudam drasticamente:
- APP_ENV=production
- APP_DEBUG=false (CRITICAL!)
- PHP artisan config:cache (Para performance)
🚀 Estratégias de Deploy
- Deploy em VPS (DigitalOcean/Linode):
- Configuração manual do Nginx, PHP e Banco.
-
Uso de ferramentas como o Laravel Forge para automação.
-
Deploy em Cloud/PaaS (Heroku/Railway):
- Deploy baseado em Git (
git push production). - Containers prontos para escalar.
🧠 Blocos de Destaque
CI/CD com GitHub Actions
Você pode configurar o GitHub para rodar seus testes automaticamente a cada git push e, se tudo passar, realizar o deploy para o servidor.
🛠️ Exercícios Progressivos
- Básico: Instale o Docker em sua máquina e tente subir um projeto novo usando o Laravel Sail.
- Intermediário: Altere o arquivo
docker-compose.ymlpara adicionar um serviço de Adminer (gerenciador de banco visual). - Desafio: Crie um script bash simples que automatize o processo de
git pull,composer installephp artisan migrateno servidor.
🚀 Mini-Projeto da Aula
Ambiente Próximo da Produção:
Configure um arquivo docker-compose.yml que contenha: WordPress (ou outro serviço), Laravel, MySQL e um Container de Proxy. Garanta que a aplicação Laravel consiga se conectar ao banco de dados usando apenas o nome do serviço definido no Docker.
Aula 16 - Projeto Final e Boas Práticas 🏁
🎯 Objetivo da Aula
Consolidar todo o conhecimento adquirido ao longo das 16 aulas. Vamos discutir arquitetura de software, padrões profissionais e apresentar as diretrizes para o desenvolvimento do sistema final do curso.
🏗️ Padrões Profissionais (Clean Code)
Para atuar em grandes empresas, seu código Laravel deve seguir padrões como: - Single Responsibility: Cada classe ou método deve ter apenas um motivo para mudar. - Service Layer: Mova a lógica pesada dos Controllers para classes de "Service". - Repository Pattern: Isole a lógica de consulta ao banco de dados (opcional, mas comum).
📊 Visão Geral do Projeto Final
Abaixo, o fluxo esperado para o sistema que você irá desenvolver:
graph TD
A[Autenticação Robustas] --> B[CRUD Completo com Relacionamentos]
B --> C[API REST para Mobile]
C --> D[Processamento em Background - Jobs]
D --> E[Ambiente Dockerizado]
E --> F[Testes Automatizados - Min 70% coverage]
🚀 Sugestões de Temas
Escolha um dos temas abaixo ou proponha um novo ao professor: 1. Sistema de Gestão de Projetos (Kanban): Com boards, tarefas, prazos e notificações. 2. Plataforma de E-commerce Básico: Com catálogo, carrinho, checkout e histórico de pedidos. 3. Sistema Acadêmico: Gestão de alunos, notas, frequências e emissão de certificados em PDF.
📝 Requisitos Obrigatórios
- Uso de Migrations e Seeders.
- Autenticação com Laravel Breeze ou Jetstream.
- Pelo menos 2 relacionamentos complexos (ex: N:N).
- Validação rigorosa em todos os formulários.
- Listagem com Paginação e Filtros.
- Upload de arquivos/imagens.
- Pelo menos 1 Job assíncrono.
- Suíte de testes básicos de feature.
🧠 Blocos de Destaque
O Caminho do Desenvolvedor
O aprendizado não termina aqui. O ecossistema Laravel é vasto: explore o Livewire, Inertia.js, Nova e Vapor. A comunidade é uma das mais ativas e acolhedoras do mundo!
🛠️ Revisão de Carreira
- LinkedIn: Como destacar seus projetos Laravel.
- GitHub: Organização de repositórios e READMEs profissionais.
- Portfólio: Hospede seu projeto final e mostre ao mundo!
🏆 Conclusão do Curso
Parabéns por chegar até aqui! Você agora possui as competências necessárias para desenvolver, testar e publicar aplicações web profissionais com PHP e Laravel.
Sucesso na sua jornada como desenvolvedor! 🐘🚀
Aula 17 - Laravel 10+ com Arquitetura de Serviços e DTOs 🐘
Objetivo Pedagógico
Objetivo: Arquitetura corporativa em Laravel moderna: desacoplamento de controladores com Service Layers, Data Transfer Objects tipados com readonly e Form Requests.
📑 1. Fundamentos Teóricos & Análise Técnica
O PHP moderno (versões 8.2 e 8.3+) transformou-se em uma linguagem fortemente tipada, expressiva e performática. No framework Laravel, a prática clássica de concentrar regras de negócio diretamente em Controllers densos (Fat Controllers) viola o princípio da responsabilidade única e impede a reutilização de lógica em comandos de console, jobs ou testes automatizados.
A arquitetura profissional em Laravel estrutura-se em:
1. Form Requests: Classes dedicadas (FormRequest) responsáveis por validar a entrada HTTP e autorizar a ação antes que o controlador seja acionado.
2. Data Transfer Objects (DTOs): Objetos imutáveis construídos com propriedades tipadas public readonly e promoção de propriedades no construtor (Constructor Property Promotion), garantindo dados sanitizados e estruturados.
3. Camada de Serviços (Service Layer): Classes puras que orquestram regras de negócio, transações de banco de dados e comunicação com serviços externos.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
HTTP["Requisição: POST /api/orders"] --> FormRequest["CreateOrderRequest (Validação)"]
FormRequest --> Controller["OrderController (Camada Fina)"]
Controller --> DTO["OrderDTO (Imutável Readonly)"]
Controller --> Service["OrderService (Regras de Domínio)"]
Service --> DB["Eloquent ORM / Database"]
Service --> Event["Evento de Domínio Disparado"]
style HTTP fill:#e1f5fe,stroke:#01579b
style FormRequest fill:#fff3e0,stroke:#e65100
style Service fill:#e8f5e9,stroke:#2e7d32
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais:
- Imutabilidade com readonly: Garantia de que os dados do DTO não sofram mutações acidentais após a criação.
- Controllers Enxutos: Controladores com menos de 20 linhas que apenas convertem requisições em DTOs e retornam respostas.
- Injeção Automática de Dependências: O Service Container do Laravel resolve serviços e dependências automaticamente.
- Transações Declarativas: Uso de DB::transaction(fn() => ...) para consistência relacional.
🛠️ 2. Implementação Prática em PHP 8.2+, Laravel 10+ e Clean Architecture
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// OrderService.php (Service Layer com DTO Imutável em PHP 8.2)
<?php
namespace App\Services;
use App\Models\Order;
use Illuminate\Support\Facades\DB;
// DTO Imutável com Constructor Promotion
readonly class CreateOrderDTO {
public function __construct(
public int $userId,
public float $totalAmount,
public array $items
) {}
public static function fromRequest(array $data): self {
return new self(
userId: (int) $data['user_id'],
totalAmount: (float) $data['total_amount'],
items: $data['items']
);
}
}
class OrderService {
public function createOrder(CreateOrderDTO $dto): Order {
return DB::transaction(function () use ($dto) {
$order = Order::create([
'user_id' => $dto->userId,
'total_amount' => $dto->totalAmount,
'status' => 'PENDING'
]);
foreach ($dto->items as $item) {
$order->items()->create([
'product_id' => $item['product_id'],
'quantity' => $item['quantity'],
'unit_price' => $item['unit_price']
]);
}
return $order->load('items');
});
}
}
💡 Análise Passo a Passo do Código
- Classe readonly Nativa: Todas as propriedades do DTO tornam-se imutáveis e fortemente tipadas sem boilerplate de getters/setters.
- Método Fábrica fromRequest: Encapsula a lógica de conversão do payload de entrada para o objeto tipado.
- Transação com DB::transaction: Garante que o pedido e seus respectivos itens sejam gravados com integridade atômica.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 18 - Queues, Jobs e Processamento em Segundo Plano 📦
Objetivo Pedagógico
Objetivo: Arquitetura assíncrona com filas de mensageria no Laravel, criação de Jobs despacháveis, priorização de filas e monitoramento em tempo real com Laravel Horizon.
📑 1. Fundamentos Teóricos & Análise Técnica
No desenvolvimento de sistemas web em PHP, onde tradicionalmente cada requisição opera no modelo Share-Nothing e é descartada ao final do script, o sistema de Queues (Filas) do Laravel é fundamental para permitir operações de longa duração sem bloquear a resposta ao usuário.
Funcionamento do ecossistema de filas do Laravel:
1. Jobs Despacháveis (ShouldQueue): Classes de trabalho que implementam a interface ShouldQueue. Ao chamar ProcessInvoice::dispatch($invoice), o Laravel serializa o modelo e o payload, gravando a mensagem no broker (geralmente Redis).
2. Workers Contínuos (queue:work): Processos PHP de longa duração (long-running processes) gerenciados por utilitários como Supervisor ou Systemd, que retiram jobs da fila e os executam sequencialmente.
3. Laravel Horizon: Painel visual e gerenciador de filas em tempo real para Redis, fornecendo balanceamento automático de carga, métricas de vazão (throughput) e controle de jobs que falharam (Failed Jobs).
📐 Arquitetura Conceitual & Diagrama de Fluxo
sequenceDiagram
autonumber
actor User as Usuário Web
participant App as Laravel Web App
participant Redis as Redis Queue Broker
participant Horizon as Laravel Horizon Workers
User->>App: Solicita Exportação de Relatório
App->>Redis: Despacha Job (ExportReportJob::dispatch)
App-->>User: 200 OK ("Exportação iniciada em background!")
Redis->>Horizon: Entrega Job para Execução
Note over Horizon: Gera Arquivo Excel / CSV em Segundo Plano
Horizon->>App: Notifica Conclusão via E-mail / WebSocket
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais:
- Interface ShouldQueue: A simples presença da interface transforma qualquer método síncrono em um processo assíncrono em fila.
- Políticas de Tentativas e Timeout: Configuração de $tries, $backoff e $timeout para controle rigoroso de falhas.
- Gerenciamento de Falhas: Registro automático de jobs com erro na tabela failed_jobs com inspeção de stack trace.
- Filas Prioritárias: Divisão de tráfego entre filas de alta prioridade (high), padrão (default) e baixa (low).
🛠️ 2. Implementação Prática em Laravel Queues, Redis e Horizon
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// SendWelcomeNotificationJob.php (Job Despachável com Retry em Laravel)
<?php
namespace App\Jobs;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class SendWelcomeNotificationJob implements ShouldQueue {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public int $tries = 3;
public array $backoff = [10, 30, 60]; // Segundos de espera entre retries
public function __construct(public User $user) {}
public function handle(): void {
// SerializesModels reidrata a instância do usuário a partir do banco
logger()->info("Enviando e-mail de boas-vindas para: {$this->user->email}");
// Simula disparo de notificação
sleep(2);
}
public function failed(\Throwable $exception): void {
logger()->error("Falha definitiva no envio de notificação: " . $exception->getMessage());
}
}
💡 Análise Passo a Passo do Código
- Trait SerializesModels: Serializa apenas o ID do usuário para a fila do Redis e busca o registro atualizado no banco na hora da execução do job.
- Backoff Exponencial em Array:
$backoff = [10, 30, 60]define intervalos crescentes de espera caso ocorra falha temporária de rede. - Gancho failed(): Método executado automaticamente quando todas as tentativas se esgotam, permitindo alertar a equipe de suporte.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 19 - Testes Automatizados com Pest PHP e TDD 🧪
Objetivo Pedagógico
Objetivo: Prática de Test-Driven Development (TDD) no ecossistema PHP utilizando Pest PHP, asserções declarativas, datasets e testes de arquitetura (Arch Testing).
📑 1. Fundamentos Teóricos & Análise Técnica
O framework de testes Pest PHP transformou a cultura de testes automatizados na comunidade PHP ao introduzir uma sintaxe expressiva, minimalista e inspirada nos melhores test runners modernos (como Jest e Vitest). Construído sobre a sólida base do PHPUnit, o Pest elimina o boilerplate de classes e métodos verbosos, permitindo focar diretamente na intenção e no comportamento do código.
Recursos destacados do Pest PHP:
1. Sintaxe Funcional Fluente: Testes declarados com test('descrição', function () { ... }) ou it('comportamento esperado', function () { ... }).
2. Expect API Declarativa: Cadeia de asserções legíveis como expect($resultado)->toBeInt()->toBeGreaterThan(10).
3. Testes de Arquitetura (Arch Testing): Permite escrever testes automatizados para validar que convenções de código da equipe não sejam violadas (ex: proibir que controllers usem modelos Eloquent diretamente ou garantir que DTOs sejam sempre imutáveis).
📐 Arquitetura Conceitual & Diagrama de Fluxo
flowchart LR
Test["Pest Test Case (it 'calculates discount')"] --> Exec["Execução Funcional"]
Exec --> Expect["Expectations API (expect()->toBe())"]
Expect --> Result{"Asserções Válidas?"}
Result -->|Sim| Green["Sucesso (Pass - Verde)"]
Result -->|Não| Red["Falha com Diff Visual Colorido"]
style Test fill:#e1f5fe,stroke:#01579b
style Expect fill:#fff3e0,stroke:#e65100
style Green fill:#e8f5e9,stroke:#2e7d32
style Red fill:#ffebee,stroke:#c62828
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais:
- Testes Mais Rápidos e Limpos: Redução drástica no número de linhas necessárias para cobrir regras de negócio.
- Datasets Parametrizados: Execução de um único teste contra dezenas de combinações de entradas via ->with([...]).
- Arquitetura Blindada: Validação estática de regras arquiteturais diretamente no pipeline de testes.
- Integração com Laravel: Helpers nativos como getJson(), postJson(), assertDatabaseHas() perfeitamente integrados.
🛠️ 2. Implementação Prática em PHP 8.2+, Pest PHP e TDD
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// OrderTest.php (Testes de Integração e Arquitetura com Pest PHP)
<?php
use App\Models\User;
use App\Services\OrderService;
use App\Services\CreateOrderDTO;
// 1. Teste de Unidade / Integração
test('cria um pedido com status pendente com sucesso', function () {
$user = User::factory()->create();
$dto = new CreateOrderDTO(userId: $user->id, totalAmount: 150.00, items: []);
$service = app(OrderService::class);
$order = $service->createOrder($dto);
expect($order->status)->toBe('PENDING')
->and($order->total_amount)->toEqual(150.00)
->and($order->user_id)->toBe($user->id);
$this->assertDatabaseHas('orders', [
'id' => $order->id,
'status' => 'PENDING'
]);
});
// 2. Teste de Arquitetura (Arch Testing)
test('garante que controllers não acessem modelos Eloquent diretamente')
->expect('App\Http\Controllers')
->not->toUse('App\Models');
💡 Análise Passo a Passo do Código
- Cadeia de Expects Fluente:
expect($order->status)->toBe('PENDING')->and(...)valida múltiplas propriedades em fluxo contínuo. - Validação de Banco:
assertDatabaseHasconfirma que a gravação física no banco relacional ocorreu corretamente. - Arch Testing de Primeira Classe: A asserção de arquitetura impede violações arquiteturais e é verificada no CI.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 20 - Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🏆
Objetivo Pedagógico
Objetivo: Construção de uma aplicação corporativa completa em Laravel 10+, com autenticação Sanctum, Service Layers, processamento em segundo plano com Horizon e suíte de testes com Pest.
📑 1. Fundamentos Teóricos & Análise Técnica
O Projeto Capstone de Especialização em Backend PHP desafia o estudante a projetar e implementar uma plataforma completa de Gestão de Assinaturas e Cobranças Recorrentes (SaaS Billing Engine) em Laravel 10+.
O projeto consolida as seguintes exigências de engenharia: 1. Autenticação Segura de APIs com Laravel Sanctum: Emissão e revogação de tokens com escopos de permissão limitados (Token Abilities). 2. Arquitetura em Camadas Desacoplada: Controllers enxutos, DTOs imutáveis tipados e Services gerenciados pelo contêiner de injeção de dependências. 3. Processamento Assíncrono com Redis: Processamento de pagamentos e liquidação periódica de faturas via Jobs gerenciados no Laravel Horizon. 4. Cobertura de Testes com Pest PHP: Suíte automatizada cobrindo testes unitários, testes de integração de API e testes de arquitetura com cobertura superior a 85%.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
Client["Client / Checkout SaaS"] --> Sanctum["Sanctum Auth Middleware"]
Sanctum --> Controller["SubscriptionController"]
Controller --> DTO["SubscriptionDTO"]
Controller --> Service["SubscriptionService"]
Service --> MySQL["MySQL / PostgreSQL (Eloquent)"]
Service --> Queue["Redis Queue (InvoiceJob)"]
Queue --> Horizon["Laravel Horizon Worker"]
Horizon --> Gateway["Gateway de Pagamento Externo"]
style Client fill:#e1f5fe,stroke:#01579b
style Sanctum fill:#fff3e0,stroke:#e65100
style Service fill:#e8f5e9,stroke:#2e7d32
style Horizon fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Design de Software Corporativo: Eliminação total de regras de negócio em controllers e views. - Conformidade e Idempotência: Chaves de idempotência em transações financeiras para prevenir cobranças em duplicidade. - Monitoramento com Horizon: Métricas visuais de latência e controle de falhas de processamento. - Pipeline de Integração Contínua: Execução do Pest e checagem de tipos estáticos com PHPStan no nível máximo de rigor.
🛠️ 2. Implementação Prática em Laravel 10+, MySQL, Redis, Pest e Horizon
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// SubscriptionController.php (Controlador Enxuto em Laravel 10)
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\CreateSubscriptionRequest;
use App\Services\SubscriptionService;
use App\Services\SubscriptionDTO;
use Illuminate\Http\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
class SubscriptionController extends Controller {
public function __construct(
private readonly SubscriptionService $subscriptionService
) {}
public function store(CreateSubscriptionRequest $request): JsonResponse {
$dto = SubscriptionDTO::fromRequest($request->validated());
$subscription = $this->subscriptionService->createSubscription($dto);
return response()->json([
'message' => 'Assinatura ativada com sucesso.',
'data' => $subscription
], Response::HTTP_CREATED);
}
}
💡 Análise Passo a Passo do Código
- Injeção readonly no Construtor: O PHP 8.2 injeta a camada de serviço com imutabilidade referencial estrita.
- Validação no Request:
$request->validated()entrega apenas dados previamente higienizados pelas regras do FormRequest. - Resposta Padronizada: Uso de constantes
Response::HTTP_CREATEDpara clareza semântica nos códigos de retorno.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Exercícios
🏋️ Exercícios do Curso
Lista completa das 20 unidades de exercicios organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
Exercícios: Aula 01 - Introdução ao PHP Moderno 🐘
🟢 Básico
- Ambiente: Execute o comando para verificar a versão do PHP no seu terminal e descreva três melhorias introduzidas na versão 8.x que você considera importantes.
- Sintaxe: Escreva um script PHP que contenha uma constante para o nome de um curso e uma variável para a carga horária. Imprima os valores usando interpolação de strings.
🟡 Intermediário
- Tipagem: Crie uma função chamada
calcularDescontoque aceite um parâmetrovalor(float) e umporcentagem(int). A função deve retornar o valor com desconto, garantindo o uso de tipagem rigorosa tanto nos parâmetros quanto no retorno. - Composer: Explique o papel do arquivo
composer.jsone do diretóriovendor. O que acontece se você apagar a pastavendore executarcomposer install?
🔴 Desafio
5. Autoloading Manual: Sem usar o Composer, crie uma função simples de spl_autoload_register que carregue classes de uma pasta chamada Classes/ baseada no nome da classe. Teste instanciando uma classe Usuario que esteja dentro desse diretório.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Ambiente **Resolução e Implementação:**// Estrutura de implementação recomendada para Ambiente
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Sintaxe
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 02 - Fundamentos de PHP e POO 🏗️
🟢 Básico
- Estruturas: Converta um bloco de
switch/caseque valida dias da semana em números (1 a 7) para a nova expressãomatchdo PHP 8. - POO Simples: Crie uma classe
Livrocom as propriedades públicastituloeautor. Instancie dois objetos e exiba seus nomes.
🟡 Intermediário
- Encapsulamento: Refatore a classe
Livrodo exercício anterior tornando as propriedades privadas. Adicione métodosgettersesetters, e no construtor use a técnica de "Constructor Property Promotion" do PHP 8. - Herança: Crie uma classe base
Eletronicoe uma subclasseSmartphone. A subclasse deve herdar a propriedadevoltageme implementar um método exclusivoligar5G().
🔴 Desafio
5. Abstração e Polimorfismo: Crie uma classe abstrata FormaGeometrica com um método abstrato calcularArea(). Implemente as classes Quadrado e Circulo herdando desta base. Crie um array de formas e itere sobre ele chamando o método de cálculo de área.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Estruturas **Resposta Comentada:** - **Fundamentação:** No contexto de **Fundamentos de PHP e POO ️**, o conceito abordado (Estruturas) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: POO Simples **Resolução e Implementação:**// Estrutura de implementação recomendada para POO Simples
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Encapsulamento
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 03 - Introdução ao Framework Laravel 🚀
🟢 Básico
- Servidor: Qual o comando do Artisan utilizado para iniciar o servidor de desenvolvimento e em qual porta ele roda por padrão?
- Navegação: Explore a estrutura de pastas de um projeto novo e identifique onde ficam guardadas as configurações de e-mail e as chaves de API.
🟡 Intermediário
- Rotas: Crie uma rota direta em
web.phpque retorne uma saudação personalizada baseada em um parâmetro opcional na URL. Se o nome não for passado, deve retornar "Olá, Visitante". - Ambiente: O que é o arquivo
.env.example? Explique a importância de nunca versionar o arquivo.envreal no Git.
🔴 Desafio
5. Exploração Técnica: No Laravel, o que é o "Service Container" e como ele se diferencia de uma classe comum em PHP? Pesquise brevemente sobre Injeção de Dependências.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Servidor **Resolução e Implementação:**// Estrutura de implementação recomendada para Servidor
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 04 - Rotas e Controllers 🛤️
🟢 Básico
- Comandos: Escreva o comando Artisan completo para criar um Controller chamado
SiteController. - Mapeamento: Crie uma rota que aponte para o método
contatode um controller e explique a diferença entre usar uma Closure (função anônima) e um Controller na rota.
🟡 Intermediário
- Parâmetros: Implemente uma rota que receba dois parâmetros:
categoriaeslug_artigo. O controller deve retornar uma frase formatada: "Exibindo artigo [slug] da categoria [categoria]". - Nomenclatura: O que são "Named Routes" (Rotas Nomeadas)? Crie uma rota com o nome
admin.dashboarde mostre como gerar a URL para essa rota dentro de um Controller.
🔴 Desafio
5. Grupos e Prefixos: Crie um grupo de rotas que utilize o prefixo api/v1 e aplique o middleware throttle:60,1. Explique o que esse middleware faz na prática.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Comandos **Resolução e Implementação:**// Estrutura de implementação recomendada para Comandos
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Mapeamento
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Parâmetros
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 05 - Views com Blade 🎨
🟢 Básico
- Sintaxe: Explique a diferença entre as tags {% raw %}
{{ $variavel }}e{!! $variavel !!}. Em qual cenário a segunda opção é perigosa? - Diretivas: Crie um bloco Blade que exiba a mensagem "Fim de estoque" se a variável
$quantidadefor zero, caso contrário exiba "$quantidade unidades disponíveis".
🟡 Intermediário
- Layouts: Crie um arquivo
layout.blade.phpcom um menu de navegação e um rodapé. Use@yield('conteudo')para definir onde as páginas filhas devem inserir seu conteúdo. - Iteração: Dado um array de objetos
Produtos, exiba-os em uma tabela HTML usando a diretiva@forelse. Trate o caso onde o array está vazio exibindo a mensagem "Nenhum produto cadastrado".
🔴 Desafio
5. Componentes Aninhados: Crie um componente Modal que aceite um título via slot e uma lista de ações (botões) via outro slot nomeado. Mostre como chamar esse componente passando conteúdos diferentes para cada parte.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Sintaxe **Resposta Comentada:** - **Fundamentação:** No contexto de **Views com Blade**, o conceito abordado (Sintaxe) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Diretivas **Resolução e Implementação:**// Estrutura de implementação recomendada para Diretivas
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Layouts
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 06 - Banco de Dados e Migrations 🗄️
🟢 Básico
- Migrations: Escreva o comando Artisan para criar uma nova migration que adicione uma tabela
fornecedores. - Rollback: O que acontece com os dados do seu banco se você executar o comando
php artisan migrate:rollback?
🟡 Intermediário
- Alteração: Crie uma migration para adicionar uma coluna
telefone(string) eativo(boolean com padrão true) à tabelaclientesjá existente. - Seeders: Explique a diferença prática entre usar um
Seedere umaFactory. Em qual situação você usaria cada um?
🔴 Desafio
5. Relacionamentos Físicos: Crie uma migration para uma tabela itens_pedido que contenha uma chave estrangeira (foreignId) apontando para a tabela pedidos. Garanta que, se o pedido for deletado, os itens também sejam excluídos automaticamente (onDelete('cascade')).
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Migrations **Resolução e Implementação:**// Estrutura de implementação recomendada para Migrations
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Rollback
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 07 - Eloquent ORM 💎
🟢 Básico
- Busca: Como você buscaria um único registro pelo seu ID usando o Eloquent? E como buscaria apenas o primeiro registro que atenda a uma condição de
nome? - Convenções: Se você tem uma tabela chamada
super_herois, qual deve ser o nome da classe Model no Laravel para que ele a reconheça automaticamente?
🟡 Intermediário
- Persistência: Demonstre as duas formas de salvar um novo registro no banco: instanciando o objeto e usando o método estático
create(). Não esqueça de mencionar a propriedade$fillable. - Relacionamentos: Implemente o código do método dentro de um Model
Autorpara definir que ele possui muitosLivros. Em seguida, mostre como você iteraria sobre os livros de um autor específico na View.
🔴 Desafio
5. Eager Loading: O que é o problema das "N+1 consultas" e como o método with() do Eloquent resolve isso? Dê um exemplo prático de como listar 50 posts e seus respectivos autores de forma performática.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Busca **Resposta Comentada:** - **Fundamentação:** No contexto de **Eloquent ORM**, o conceito abordado (Busca) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Convenções **Resolução e Implementação:**// Estrutura de implementação recomendada para Convenções
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Persistência
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 08 - CRUD Completo 🛠️
🟢 Básico
- Rotas: Escreva a linha de código necessária em
web.phppara gerar todas as rotas de um CRUD deProdutosde uma única vez. - CSRF: Por que o erro "419 | Page Expired" acontece ao enviar um formulário e como corrigi-lo?
🟡 Intermediário
- Validação: No método
updatede um controller, implemente uma validação que exija que o campoemailseja obrigatório, tenha um formato válido de e-mail e seja único no banco de dados (exceto para o id do próprio registro que está sendo editado). - Feedback: Como você envia uma mensagem de sucesso ("Produto atualizado!") de um Controller para a View usando "Flash Messages"?
🔴 Desafio
5. Segurança e UX: Implemente uma lógica onde, antes de excluir um registro no método destroy, o sistema verifique se aquele item possui dependências em outras tabelas (ex: não deletar uma categoria que possui produtos vinculados). Se possuir, retorne um erro amigável para o usuário.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Rotas **Resolução e Implementação:**// Estrutura de implementação recomendada para Rotas
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 09 - Autenticação e Autorização 🔐
🟢 Básico
- Comandos: Escreva o comando do Artisan para instalar o Laravel Breeze usando a stack de "Blade" e o motor de testes "Pest".
- Setup: Após rodar o comando de instalação do Breeze, quais outros comandos de terminal você deve rodar para que o front-end e o banco de dados estejam prontos?
🟡 Intermediário
- Gates: Crie um Gate chamado
ver-relatoriodentro doAuthServiceProvider. Ele deve permitir o acesso apenas se o usuário tiver o cargo (role) de 'gerente'. - Middlewares: Demonstre como você protegeria um grupo de rotas para que apenas usuários logados possam acessá-las, usando o arquivo
web.php.
🔴 Desafio
5. Policies: Crie uma classe Policy para o model Documento. Implemente o método view que permite que um usuário visualize o documento apenas se ele for o autor (user_id) OU se ele tiver um perfil de 'admin'. Mostre como usar essa policy em um Controller.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Comandos **Resolução e Implementação:**// Estrutura de implementação recomendada para Comandos
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Setup
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 10 - APIs REST com Laravel 🌐
🟢 Básico
- Rotas: No Laravel, em qual arquivo devemos registrar as rotas de uma API e qual o prefixo que elas ganham automaticamente?
- Formatação: Por que é recomendável usar um formato padrão como JSON para as respostas da API em vez de simplesmente retornar uma string ou HTML?
🟡 Intermediário
- API Resources: Crie um Resource
LogResource. No métodotoArray, formate a data de criação (created_at) para o padrão brasileiro (d/m/Y H:i) e renomeie o campoidparaid_do_log. - Respostas: Como você retornaria um erro 404 propositalmente em um controller de API caso um registro não fosse encontrado, garantindo que a resposta seja no formato JSON?
🔴 Desafio
5. Versionamento e Injeção: Crie uma estrutura de diretórios para que sua API suporte /api/v1/ e /api/v2/. Explique a importância de injetar o Model por parâmetro (Route Model Binding) diretamente no método do Controller da API.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Rotas **Resposta Comentada:** - **Fundamentação:** No contexto de **APIs REST com Laravel**, o conceito abordado (Rotas) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Formatação **Resposta Comentada:** - **Fundamentação:** No contexto de **APIs REST com Laravel**, o conceito abordado (Formatação) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: API Resources **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **APIs REST com Laravel**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Respostas **Resposta Comentada:** - **Fundamentação:** No contexto de **APIs REST com Laravel**, o conceito abordado (Respostas) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Versionamento e Injeção **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **APIs REST com Laravel**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.Exercícios: Aula 11 - Segurança em Aplicações Web 🛡️
🟢 Básico
- XSS: Mostre como o Laravel (motor Blade) protege automaticamente uma variável que venha de um input do usuário contendo uma tag
<script>. - Debug: Por que é perigoso deixar a variável
APP_DEBUG=trueem um servidor de produção? O que um invasor poderia descobrir através de uma tela de erro?
🟡 Intermediário
- Hash: Use a Facade
Hashpara simular o processo de verificação de uma senha. Crie um hash e depois valide se a string "123456" corresponde àquele hash. - Rate Limiter: Configure um limite de 5 tentativas de acesso por minuto para uma rota de login. Explique qual status HTTP o usuário receberá caso exceda esse limite.
🔴 Desafio
5. Boas Práticas: Pesquise sobre o middleware TrustProxies. Em qual cenário de deploy (como usar Cloudflare ou Load Balancers) ele se torna essencial para a segurança da aplicação?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: XSS **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Segurança em Aplicações Web ️**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Debug **Resposta Comentada:** - **Fundamentação:** No contexto de **Segurança em Aplicações Web ️**, o conceito abordado (Debug) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Hash **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Segurança em Aplicações Web ️**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Rate Limiter **Resposta Comentada:** - **Fundamentação:** No contexto de **Segurança em Aplicações Web ️**, o conceito abordado (Rate Limiter) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Boas Práticas **Resposta Comentada:** - **Fundamentação:** No contexto de **Segurança em Aplicações Web ️**, o conceito abordado (Boas Práticas) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 12 - Testes Automatizados 🧪
🟢 Básico
- Comandos: Qual o comando do Artisan para rodar toda a sua suíte de testes e como você pode rodar apenas um arquivo de teste específico?
- Conceito: Explique a principal diferença entre um teste de Unidade (Unit) e um teste de Funcionalidade (Feature) no contexto do Laravel.
🟡 Intermediário
- Asserções: Crie um teste de Feature que acesse a rota
/api/statuse verifique: se o status code é 200 e se o JSON retornado contém a chave"status" => "online". - Database Testing: O que o trait
RefreshDatabasefaz quando adicionado a uma classe de teste? Por que ele é fundamental para testes que interagem com o banco?
🔴 Desafio
5. TDD na Prática: Escreva o plano de teste (em passos) para uma funcionalidade de "Esqueci minha senha". O que você testaria primeiro e quais seriam as asserções finais para garantir que o e-mail foi realmente disparado?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Comandos **Resolução e Implementação:**// Estrutura de implementação recomendada para Comandos
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Asserções
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 13 - Upload de Arquivos e Storage 📂
🟢 Básico
- Link Simbólico: Qual o comando exato utilizado para criar o link simbólico entre a pasta
storage/app/publice a pastapublic/storage? - Helper: Como você gera uma URL pública para um arquivo que foi salvo no disco
publicusando o helperasset?
🟡 Intermediário
- Validação: Escreva as regras de validação para um campo de upload que: deve ser obrigatório, deve ser uma imagem (jpg ou png) e não pode exceder 500 KB.
- Armazenamento: Qual a diferença entre os métodos
store()estoreAs()? Em qual cenário você usaria ostoreAs()?
🔴 Desafio
5. Multi-Disk e Cleanup: Implemente um pequeno código em PHP que salve um arquivo no disco local e, logo em seguida, mova-o para um disco fictício chamado s3. O código deve garantir que o arquivo original seja deletado do disco local após o upload para a nuvem.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Link Simbólico **Resolução e Implementação:**// Estrutura de implementação recomendada para Link Simbólico
// Validação de regras de negócio e retorno consistente
// Estrutura de implementação recomendada para Validação
// Validação de regras de negócio e retorno consistente
Exercícios: Aula 14 - Filas, Eventos e Jobs ⚡
🟢 Básico
- Drivers: Identifique no arquivo
.envqual o driver de fila padrão (QUEUE_CONNECTION) de um novo projeto Laravel e cite outros dois drivers comuns usados em produção. - Workers: Qual o comando do Artisan que deve ser executado para que os jobs que estão na fila comecem a ser processados?
🟡 Intermediário
- Despacho: Mostre como disparar um Job chamado
EnviarRelatoriopassando um ID de usuário como parâmetro, configurando um atraso de 10 minutos para o processamento (delay). - Listeners: Explique a diferença entre um Evento e um Listener. Um único Evento pode ter múltiplos Listeners? Dê um exemplo.
🔴 Desafio
5. Monitoramento e Falhas: O que acontece se um Job falhar durante a execução? Como você configuraria o Job para tentar novamente 3 vezes antes de desistir (tries)?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Drivers **Resposta Comentada:** - **Fundamentação:** No contexto de **Filas, Eventos e Jobs ⚡**, o conceito abordado (Drivers) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Workers **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Filas, Eventos e Jobs ⚡**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Despacho **Resposta Comentada:** - **Fundamentação:** No contexto de **Filas, Eventos e Jobs ⚡**, o conceito abordado (Despacho) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Listeners **Resposta Comentada:** - **Fundamentação:** No contexto de **Filas, Eventos e Jobs ⚡**, o conceito abordado (Listeners) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Monitoramento e Falhas **Resposta Comentada:** - **Fundamentação:** No contexto de **Filas, Eventos e Jobs ⚡**, o conceito abordado (Monitoramento e Falhas) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 15 - Docker e Deploy 🐳🚀
🟢 Básico
- Comandos Docker: Liste os comandos para subir e derrubar o ambiente do Laravel Sail no seu terminal.
- Ambiente: No arquivo
.envde produção, as variáveisAPP_DEBUGeAPP_ENVdevem assumir quais valores para garantir segurança e performance?
🟡 Intermediário
- Containerização: Explique para que serve o arquivo
docker-compose.ymle quais são os serviços mínimos necessários para rodar uma aplicação Laravel com banco de dados MySQL. - Caches de Produção: Por que rodar comandos como
php artisan config:cacheephp artisan route:cacheé fundamental em um ambiente de produção?
🔴 Desafio
5. Fluxo de Deploy: Desenvolva um checklist de 5 passos técnicos que você executaria ao subir sua aplicação em uma VPS nova pela primeira vez.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Comandos Docker **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Docker e Deploy**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Ambiente **Resposta Comentada:** - **Fundamentação:** No contexto de **Docker e Deploy**, o conceito abordado (Ambiente) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Containerização **Resposta Comentada:** - **Fundamentação:** No contexto de **Docker e Deploy**, o conceito abordado (Containerização) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Caches de Produção **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Docker e Deploy**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 5: Fluxo de Deploy **Resposta Comentada:** - **Fundamentação:** No contexto de **Docker e Deploy**, o conceito abordado (Fluxo de Deploy) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 16 - Projeto Final 🏁
🟢 Básico
- Arquitetura: Defina qual será o tema do seu projeto final e escreva os nomes das 3 tabelas principais que ele terá.
- Recursos: Identifique pelo menos duas funcionalidades avançadas (Filas, Uploads, APIs) que você planeja implementar no seu sistema.
🟡 Intermediário
- Modelagem: Desenhe (em texto ou diagrama simples) como será a relação entre suas tabelas (ex: 1:N entre Usuário e Tarefas).
- Segurança: Descreva como você pretende proteger as rotas administrativas do seu sistema usando o Laravel Breeze e Middlewares.
🔴 Desafio
5. Pitch Técnico: Escreva um parágrafo "vendendo" seu projeto final, focando nas tecnologias Laravel utilizadas e nos problemas que o sistema resolve para o usuário final.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Arquitetura **Resolução e Implementação:**// Estrutura de implementação recomendada para Arquitetura
// Validação de regras de negócio e retorno consistente
Projetos
🚀 Projetos do Curso
Lista completa das 20 unidades de projetos organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
Projeto 01 - Setup e Primeiros Scripts PHP 🐘
Objetivo: Validar a instalação do PHP e do Composer, e escrever os primeiros scripts usando recursos modernos da linguagem.
O Desafio
- Instale o PHP 8.2+ e o Composer.
- Rode
php -vecomposer -vno terminal para confirmar a instalação. - Crie um script
calculadora.phpque receba dois números e uma operação via linha de comando (ex:php calculadora.php 10 5 soma) e imprima o resultado usando umamatch expression. - Trate o caso de uma operação inválida exibindo uma mensagem de erro clara.
O que entregar?
- Print do terminal com a saída de
php -vecomposer -v. - Código-fonte do
calculadora.php. - Print do script rodando com pelo menos 2 operações diferentes (uma válida e uma inválida).
Projeto 02 - Modelando Classes em PHP 🏗️
Objetivo: Aplicar Programação Orientada a Objetos (classes, herança, construtores promovidos) para modelar um domínio simples, sem framework.
O Desafio
- Crie uma classe abstrata
Veiculocom as propriedades$modeloe$velocidadeMaxima. - Crie as classes
CarroeMoto, que herdam deVeiculoe implementam um métodoacelerar(). - Use promoção de propriedades no construtor (PHP 8) nas duas classes filhas.
- Use uma
match expressionem pelo menos um método para categorizar o veículo (ex: por faixa de velocidade). - Instancie os objetos num script e imprima a descrição de cada um.
O que entregar?
- Código das três classes (
Veiculo,Carro,Moto). - Print da execução do script mostrando a descrição de cada veículo.
- Duas ou três linhas explicando por que a herança evitou duplicação de código aqui.
Projeto 03 - Primeiro Projeto Laravel 🚀
Objetivo: Criar e rodar um projeto Laravel do zero, entendendo a estrutura de pastas do framework.
O Desafio
- Rode
composer create-project laravel/laravel meu-primeiro-projeto. - Suba o servidor local com
php artisan servee acesse a página de boas-vindas no navegador. - Explore as pastas
app/,routes/eresources/e escreva um resumo de uma linha sobre o que cada uma guarda. - Configure o nome da aplicação no arquivo
.env(APP_NAME) e confirme a mudança recarregando a página.
O que entregar?
- Print da página de boas-vindas do Laravel rodando localmente.
- O resumo de uma linha para cada uma das três pastas exploradas.
- Print do
.envcom oAPP_NAMEalterado.
Projeto 04 - Gerenciador de Tarefas V1 🏆
Este projeto consolida o Módulo 1: Primeiros Passos (PHP moderno, POO e fundamentos do Laravel).
Objetivo: Construir as rotas e o controller de um gerenciador de tarefas simples, sem persistência em banco ainda.
O Desafio
- Crie as rotas
GET /tarefas,GET /tarefas/criarePOST /tarefasemroutes/web.php. - Crie um
TarefaControllercom os métodosindex,createestore. - Armazene as tarefas temporariamente num array estático (sem banco de dados) só para validar o fluxo completo.
- Rode
php artisan route:liste confira se todas as rotas foram registradas corretamente.
O que entregar?
- Código do
TarefaControllere das rotas. - Print da saída de
php artisan route:list. - Print de uma tarefa sendo criada via formulário e aparecendo na listagem.
Projeto 05 - Interface com Blade 🎨
Objetivo: Construir a interface visual do Gerenciador de Tarefas (Projeto 04) usando o motor de templates Blade.
O Desafio
- Crie um layout base
layouts/app.blade.phpcom@yieldpara o conteúdo das páginas. - Crie a view
tarefas/index.blade.php, que lista as tarefas usando@foreach. - Use
@if/@elsepara exibir uma mensagem amigável quando não houver tarefas cadastradas. - Adicione um formulário Blade (
tarefas/criar.blade.php) para criar uma nova tarefa.
O que entregar?
- Código do layout base e das duas views.
- Print da página com tarefas listadas.
- Print da página exibindo a mensagem de "nenhuma tarefa" (liste vazia).
Projeto 06 - Modelando o Banco com Migrations 🗄️
Objetivo: Substituir o array estático do Gerenciador de Tarefas por uma tabela real no banco de dados, usando Migrations.
O Desafio
- Configure a conexão com o banco de dados no
.env(SQLite ou MySQL). - Crie uma migration
create_tarefas_tablecom os campostitulo,descricaoeconcluida(boolean). - Rode
php artisan migratee confira a tabela criada no banco. - Escreva o método
down()da migration e teste o rollback comphp artisan migrate:rollback.
O que entregar?
- Código da migration (métodos
up()edown()). - Print da saída de
php artisan migratecom sucesso. - Print da estrutura da tabela
tarefas(viaphp artisan tinkerou um client de banco).
Projeto 07 - Consultando com Eloquent 💎
Objetivo: Criar o Model Eloquent e substituir o array estático por consultas reais ao banco de dados.
O Desafio
- Crie o model
Tarefacomphp artisan make:model Tarefa. - Atualize o
TarefaControllerpara usarTarefa::all(),Tarefa::create()eTarefa::find()em vez do array estático. - Use
php artisan tinkerpara criar 3 tarefas de teste diretamente no console. - Adicione um scope local
scopeConcluidasno model, que filtra só as tarefas já concluídas.
O que entregar?
- Código do model
Tarefae do controller atualizado. - Print do
tinkercriando registros de teste. - Print da listagem de tarefas filtradas pelo scope
concluidas.
Projeto 08 - E-commerce Minimalista 🏆
Este projeto consolida o Módulo 2: CRUD e Persistência (Views com Blade, Migrations e Eloquent).
Objetivo: Construir um CRUD completo de produtos, unindo tudo que foi aprendido no módulo.
O Desafio
- Crie a migration e o model
Produto(camposnome,preco,estoque). - Gere um resource controller com
php artisan make:controller ProdutoController --resourcee registre as rotas comRoute::resource('produtos', ProdutoController::class). - Implemente as 4 operações do CRUD (listar, criar, editar, excluir) com views Blade para cada uma.
- Valide que
precoseja numérico e positivo, e queestoquenão seja negativo, antes de salvar.
O que entregar?
- Código do model, controller e rotas.
- Prints das 4 telas: listagem, criação, edição e exclusão (com confirmação).
- Print de uma tentativa de salvar um produto com dados inválidos, mostrando a mensagem de erro.
Projeto 09 - Login com Laravel Breeze 🔐
Objetivo: Adicionar autenticação de usuários ao E-commerce Minimalista (Projeto 08) usando o Laravel Breeze.
O Desafio
- Instale o Breeze:
composer require laravel/breeze --devephp artisan breeze:install blade. - Rode as migrations e crie uma conta de teste pelo formulário de registro.
- Proteja as rotas de criação, edição e exclusão de produtos com o middleware
auth. - Exiba o nome do usuário logado no layout, com um botão de logout.
O que entregar?
- Print das telas de login e registro funcionando.
- Print de uma tentativa de acessar uma rota protegida sem estar logado (deve redirecionar para o login).
- Print do usuário logado, com nome exibido no layout.
Projeto 10 - API REST de Produtos 🌐
Objetivo: Expor os produtos do E-commerce como uma API REST em JSON, separada das views Blade.
O Desafio
- Crie as rotas de API em
routes/api.phpcomRoute::apiResource('produtos', ProdutoApiController::class). - Use API Resources (
php artisan make:resource ProdutoResource) para formatar a resposta JSON. - Implemente os 5 métodos REST (index, show, store, update, destroy), retornando os status HTTP corretos (200, 201, 404, 204).
- Teste todas as rotas no Postman ou Insomnia.
O que entregar?
- Código do
ProdutoApiControllere doProdutoResource. - Coleção do Postman/Insomnia exportada, ou prints de cada requisição mostrando o status HTTP correto.
Projeto 11 - Blindando a API 🛡️
Objetivo: Aplicar boas práticas de segurança na API de produtos construída no Projeto 10.
O Desafio
- Configure o CORS (
config/cors.php) para aceitar requisições apenas de uma origem específica. - Adicione rate limiting nas rotas de API (
throttle:60,1) e teste excedendo o limite. - Use FormRequests para sanitizar os dados de entrada e defina
$fillableno model, evitando Mass Assignment. - Teste a proteção contra SQL Injection enviando um input malicioso (ex:
' OR '1'='1) num campo de busca e confirme que o Eloquent não é afetado.
O que entregar?
- Código do FormRequest e da configuração de CORS/throttle.
- Print do erro
429 Too Many Requestsao exceder o rate limit. - Print confirmando que o input malicioso não alterou o resultado da consulta.
Projeto 12 - API de Finanças 🏆
Este projeto consolida o Módulo 3: Segurança e APIs (Autenticação, APIs REST, Segurança e Testes).
Objetivo: Construir uma API de controle financeiro pessoal, com autenticação, segurança e cobertura de testes automatizados.
O Desafio
- Crie um model
Transacao(camposdescricao,valor,tipo— entrada ou saída) vinculado ao usuário autenticado (user_id). - Exponha uma API REST protegida por autenticação (Sanctum ou Breeze) para CRUD de transações.
- Escreva testes de Feature com PHPUnit cobrindo: criar transação autenticado, tentar criar sem autenticação (deve falhar) e calcular o saldo total do usuário.
- Rode
php artisan teste garanta que todos os testes passem.
O que entregar?
- Código do model, controller e testes.
- Print do
php artisan testcom todos os testes passando (verde). - Print de uma chamada autenticada à API e de uma chamada não-autenticada sendo rejeitada.
Projeto 13 - Upload de Comprovantes 📂
Objetivo: Adicionar upload de arquivos à API de Finanças (Projeto 12), permitindo anexar comprovantes às transações.
O Desafio
- Configure o disco de storage com
php artisan storage:link. - Adicione um campo
comprovantena tabela de transações (nova migration). - Implemente o upload usando
$request->file('comprovante')->store('comprovantes'), validando tipo (PDF ou imagem) e tamanho máximo de 2MB. - Crie uma rota para download/visualização do comprovante armazenado.
O que entregar?
- Código da validação e do método de upload.
- Print de um upload bem-sucedido, com o arquivo acessível pela rota de download.
- Print de uma tentativa de upload rejeitada (arquivo inválido ou grande demais).
Projeto 14 - Processamento Assíncrono com Filas ⚡
Objetivo: Mover uma tarefa demorada (envio de notificação) para uma fila, evitando travar a resposta da API.
O Desafio
- Configure o driver de fila (
QUEUE_CONNECTION=databaseouredis) e rode as migrations de filas. - Crie um Job
EnviarNotificacaoTransacaoque simula o envio de um e-mail, usandosleep(3)para representar latência. - Dispare o Job ao criar uma nova transação, com
EnviarNotificacaoTransacao::dispatch($transacao). - Rode o worker (
php artisan queue:work) e confirme que a API responde imediatamente, enquanto o Job processa em segundo plano.
O que entregar?
- Código do Job e do ponto de disparo (
dispatch). - Print do terminal com o worker processando o Job.
- Comparação (print ou tabela) do tempo de resposta da API com e sem o uso da fila.
Projeto 15 - Containerizando com Docker 🐳
Objetivo: Empacotar a aplicação em containers Docker, preparando-a para deploy.
O Desafio
- Crie um
Dockerfilepara a aplicação PHP/Laravel (imagem base PHP-FPM). - Crie um
docker-compose.ymlcom 3 serviços: aplicação (PHP), banco de dados e Nginx. - Suba o ambiente com
docker-compose up -de acesse a aplicação rodando nos containers. - Rode
php artisan migratedentro do container da aplicação (docker-compose exec app php artisan migrate).
O que entregar?
- Código do
Dockerfilee dodocker-compose.yml. - Print dos containers rodando (
docker ps). - Print da aplicação acessível pelo navegador, servida pelos containers.
Projeto 16 - Sistema ERP Profissional 🎓
Este é o projeto de conclusão do curso. Você deve construir uma aplicação robusta utilizando todos os conceitos aprendidos.
Requisitos
- Autenticação e Autorização (Gates/Policies)
- CRUD completo com Relacionamentos (Eloquent)
- Validação no Servidor (FormRequests)
- API REST documentada
- Processamento em Fila (Events/Jobs)
- Containerização com Docker
- Testes de Feature e Unitários
Sugestões de Temas
- Gestão de Vendas e Estoque
- Plataforma de Cursos Online
- Sistema de Agendamentos Médicos
- Rede Social para Desenvolvedores
Quizzes
🧠 Quizzes de Fixação
Lista completa das 20 unidades de quizzes organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
🧠 Quiz 01 – Introdução ao PHP Moderno 🐘
- Qual é o conceito fundamental e objetivo principal de Introdução ao PHP Moderno 🐘?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Introdução ao PHP Moderno 🐘?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Introdução ao PHP Moderno 🐘, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Introdução ao PHP Moderno 🐘?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Introdução ao PHP Moderno 🐘 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Introdução ao PHP Moderno 🐘, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Introdução ao PHP Moderno 🐘?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Introdução ao PHP Moderno 🐘 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Introdução ao PHP Moderno 🐘 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Introdução ao PHP Moderno 🐘 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 02 – Fundamentos de PHP e POO 🏗️
- Qual é o conceito fundamental e objetivo principal de Fundamentos de PHP e POO 🏗️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Fundamentos de PHP e POO 🏗️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Fundamentos de PHP e POO 🏗️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Fundamentos de PHP e POO 🏗️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Fundamentos de PHP e POO 🏗️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Fundamentos de PHP e POO 🏗️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Fundamentos de PHP e POO 🏗️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Fundamentos de PHP e POO 🏗️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Fundamentos de PHP e POO 🏗️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Fundamentos de PHP e POO 🏗️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 03 – Introdução ao Framework Laravel 🚀
- Qual é o conceito fundamental e objetivo principal de Introdução ao Framework Laravel 🚀?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Introdução ao Framework Laravel 🚀?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Introdução ao Framework Laravel 🚀, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Introdução ao Framework Laravel 🚀?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Introdução ao Framework Laravel 🚀 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Introdução ao Framework Laravel 🚀, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Introdução ao Framework Laravel 🚀?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Introdução ao Framework Laravel 🚀 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Introdução ao Framework Laravel 🚀 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Introdução ao Framework Laravel 🚀 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 04 – Rotas e Controllers 🛤️
- Qual é o conceito fundamental e objetivo principal de Rotas e Controllers 🛤️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Rotas e Controllers 🛤️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Rotas e Controllers 🛤️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Rotas e Controllers 🛤️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Rotas e Controllers 🛤️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Rotas e Controllers 🛤️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Rotas e Controllers 🛤️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Rotas e Controllers 🛤️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Rotas e Controllers 🛤️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Rotas e Controllers 🛤️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 05 – Views com Blade 🎨
- Qual é o conceito fundamental e objetivo principal de Views com Blade 🎨?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Views com Blade 🎨?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Views com Blade 🎨, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Views com Blade 🎨?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Views com Blade 🎨 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Views com Blade 🎨, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Views com Blade 🎨?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Views com Blade 🎨 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Views com Blade 🎨 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Views com Blade 🎨 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 06 – Banco de Dados e Migrations 🗄️
- Qual é o conceito fundamental e objetivo principal de Banco de Dados e Migrations 🗄️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Banco de Dados e Migrations 🗄️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Banco de Dados e Migrations 🗄️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Banco de Dados e Migrations 🗄️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Banco de Dados e Migrations 🗄️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Banco de Dados e Migrations 🗄️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Banco de Dados e Migrations 🗄️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Banco de Dados e Migrations 🗄️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Banco de Dados e Migrations 🗄️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Banco de Dados e Migrations 🗄️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 07 – Eloquent ORM 💎
- Qual é o conceito fundamental e objetivo principal de Eloquent ORM 💎?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Eloquent ORM 💎?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Eloquent ORM 💎, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Eloquent ORM 💎?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Eloquent ORM 💎 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Eloquent ORM 💎, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Eloquent ORM 💎?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Eloquent ORM 💎 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Eloquent ORM 💎 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Eloquent ORM 💎 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 08 – CRUD Completo 🛠️
- Qual é o conceito fundamental e objetivo principal de CRUD Completo 🛠️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de CRUD Completo 🛠️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em CRUD Completo 🛠️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em CRUD Completo 🛠️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de CRUD Completo 🛠️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em CRUD Completo 🛠️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em CRUD Completo 🛠️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a CRUD Completo 🛠️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar CRUD Completo 🛠️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a CRUD Completo 🛠️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 09 – Autenticação e Autorização 🔐
- Qual é o conceito fundamental e objetivo principal de Autenticação e Autorização 🔐?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Autenticação e Autorização 🔐?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Autenticação e Autorização 🔐, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Autenticação e Autorização 🔐?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Autenticação e Autorização 🔐 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Autenticação e Autorização 🔐, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Autenticação e Autorização 🔐?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Autenticação e Autorização 🔐 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Autenticação e Autorização 🔐 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Autenticação e Autorização 🔐 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 10 – APIs REST com Laravel 🌐
- Qual é o conceito fundamental e objetivo principal de APIs REST com Laravel 🌐?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de APIs REST com Laravel 🌐?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em APIs REST com Laravel 🌐, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em APIs REST com Laravel 🌐?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de APIs REST com Laravel 🌐 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em APIs REST com Laravel 🌐, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em APIs REST com Laravel 🌐?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a APIs REST com Laravel 🌐 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar APIs REST com Laravel 🌐 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a APIs REST com Laravel 🌐 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 11 – Segurança em Aplicações Web 🛡️
- Qual é o conceito fundamental e objetivo principal de Segurança em Aplicações Web 🛡️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Segurança em Aplicações Web 🛡️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Segurança em Aplicações Web 🛡️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Segurança em Aplicações Web 🛡️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Segurança em Aplicações Web 🛡️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Segurança em Aplicações Web 🛡️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Segurança em Aplicações Web 🛡️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Segurança em Aplicações Web 🛡️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Segurança em Aplicações Web 🛡️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Segurança em Aplicações Web 🛡️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 12 – Testes Automatizados 🧪
- Qual é o conceito fundamental e objetivo principal de Testes Automatizados 🧪?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Testes Automatizados 🧪?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Testes Automatizados 🧪, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Testes Automatizados 🧪?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Testes Automatizados 🧪 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Testes Automatizados 🧪, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Testes Automatizados 🧪?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Testes Automatizados 🧪 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Testes Automatizados 🧪 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Testes Automatizados 🧪 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 13 – Upload de Arquivos e Storage 📂
- Qual é o conceito fundamental e objetivo principal de Upload de Arquivos e Storage 📂?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Upload de Arquivos e Storage 📂?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Upload de Arquivos e Storage 📂, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Upload de Arquivos e Storage 📂?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Upload de Arquivos e Storage 📂 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Upload de Arquivos e Storage 📂, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Upload de Arquivos e Storage 📂?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Upload de Arquivos e Storage 📂 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Upload de Arquivos e Storage 📂 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Upload de Arquivos e Storage 📂 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 14 – Filas, Eventos e Jobs ⚡
- Qual é o conceito fundamental e objetivo principal de Filas, Eventos e Jobs ⚡?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Filas, Eventos e Jobs ⚡?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Filas, Eventos e Jobs ⚡, Eventos e Jobs ⚡, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Filas, Eventos e Jobs ⚡?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Filas, Eventos e Jobs ⚡ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Filas, Eventos e Jobs ⚡, Eventos e Jobs ⚡, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Filas, Eventos e Jobs ⚡?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Filas, Eventos e Jobs ⚡ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Filas, Eventos e Jobs ⚡ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Filas, Eventos e Jobs ⚡ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 15 – Docker e Deploy 🐳🚀
- Qual é o conceito fundamental e objetivo principal de Docker e Deploy 🐳🚀?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Docker e Deploy 🐳🚀?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Docker e Deploy 🐳🚀, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Docker e Deploy 🐳🚀?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Docker e Deploy 🐳🚀 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Docker e Deploy 🐳🚀, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Docker e Deploy 🐳🚀?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Docker e Deploy 🐳🚀 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Docker e Deploy 🐳🚀 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Docker e Deploy 🐳🚀 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 16 – Projeto Final e Boas Práticas 🏁
- Qual é o conceito fundamental e objetivo principal de Projeto Final e Boas Práticas 🏁?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Projeto Final e Boas Práticas 🏁?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Projeto Final e Boas Práticas 🏁, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Projeto Final e Boas Práticas 🏁?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Projeto Final e Boas Práticas 🏁 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Projeto Final e Boas Práticas 🏁, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Projeto Final e Boas Práticas 🏁?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Projeto Final e Boas Práticas 🏁 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Projeto Final e Boas Práticas 🏁 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Projeto Final e Boas Práticas 🏁 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 17 – Laravel 10+ com Arquitetura de Serviços e DTOs 🚀
- Qual o propósito principal de Laravel 10+ com Arquitetura de Serviços e DTOs 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Laravel 10+ com Arquitetura de Serviços e DTOs 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Laravel 10+ com Arquitetura de Serviços e DTOs 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Laravel 10+ com Arquitetura de Serviços e DTOs 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Laravel 10+ com Arquitetura de Serviços e DTOs 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Laravel 10+ com Arquitetura de Serviços e DTOs 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Laravel 10+ com Arquitetura de Serviços e DTOs 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Laravel 10+ com Arquitetura de Serviços e DTOs 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Laravel 10+ com Arquitetura de Serviços e DTOs 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Laravel 10+ com Arquitetura de Serviços e DTOs 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
🧠 Quiz 18 – Queues, Jobs e Processamento em Segundo Plano 🚀
- Qual o propósito principal de Queues, Jobs e Processamento em Segundo Plano 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Queues, Jobs e Processamento em Segundo Plano 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Queues, Jobs e Processamento em Segundo Plano 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Queues, Jobs e Processamento em Segundo Plano 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Queues, Jobs e Processamento em Segundo Plano 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Queues, Jobs e Processamento em Segundo Plano 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Queues, Jobs e Processamento em Segundo Plano 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Queues, Jobs e Processamento em Segundo Plano 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Queues, Jobs e Processamento em Segundo Plano 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Queues, Jobs e Processamento em Segundo Plano 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
🧠 Quiz 19 – Testes Automatizados com Pest PHP e TDD 🚀
- Qual o propósito principal de Testes Automatizados com Pest PHP e TDD 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Testes Automatizados com Pest PHP e TDD 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Testes Automatizados com Pest PHP e TDD 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Testes Automatizados com Pest PHP e TDD 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Testes Automatizados com Pest PHP e TDD 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Testes Automatizados com Pest PHP e TDD 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Testes Automatizados com Pest PHP e TDD 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Testes Automatizados com Pest PHP e TDD 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Testes Automatizados com Pest PHP e TDD 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Testes Automatizados com Pest PHP e TDD 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
🧠 Quiz 20 – Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀
- Qual o propósito principal de Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
Slides
Configuração
Ambientes de Desenvolvimento e Configuração 🛠️
Guias oficiais passo a passo para configurar suas ferramentas profissionais de desenvolvimento para Backend com PHP Moderno.
-
PHP 8.3+ e Extensões Essenciais --- Instalação do runtime PHP 8.3+, extensões PDO, mbstring, curl e servidor embutido.
-
Gerenciador de Dependências Composer --- Instalação do Composer e configuração de autoloading PSR-4 para projetos modernos.
-
Ambiente Docker com Nginx, PHP-FPM e MySQL --- Stack completa de microsserviços PHP rodando isolada em containers Docker.
-
Depuração com Xdebug e Testes com PHPUnit --- Configuração do debugger Xdebug no VS Code e suíte de testes unitários automatizados.
Setup 01: PHP 8.3+ e Extensões Essenciais 🛠️
Objetivo da Configuração
Objetivo: Instalação do runtime PHP 8.3+, extensões PDO, mbstring, curl e servidor embutido.
1. Pré-Requisitos e Visão Geral
A configuração correta deste ambiente é fundamental para o desenvolvimento eficiente e sem atritos ao longo do curso de Backend com PHP Moderno.
2. Passo a Passo de Instalação e Configuração
📥 Passo 1: Download e Instalação
Siga as instruções oficiais correspondentes ao seu sistema operacional (Windows, Linux ou macOS):
- Baixe o pacote oficial da ferramenta diretamente do site do mantenedor.
- Execute o assistente de instalação habilitando a opção de adicionar os binários à variável de ambiente PATH.
⚙️ Passo 2: Verificação no Terminal
Abra uma nova janela de terminal e valide se o comando está acessível:
💻 Passo 3: Configuração no Editor / IDE
- Instale as extensões recomendadas para obter destaque de sintaxe, autocompletar e linters integrados.
- Reinicie o editor para carregar os novos caminhos de execução.
3. Teste Rápido de Validação
Crie um arquivo de teste simples para comprovar que o compilador, interpretador ou ferramenta está operando com 100% de sucesso.
🎯 Próximos Passos
Com o ambiente configurado, você está pronto para iniciar as aulas práticas e desenvolver os projetos da disciplina.
Setup 02: Gerenciador de Dependências Composer 🛠️
Objetivo da Configuração
Objetivo: Instalação do Composer e configuração de autoloading PSR-4 para projetos modernos.
1. Pré-Requisitos e Visão Geral
A configuração correta deste ambiente é fundamental para o desenvolvimento eficiente e sem atritos ao longo do curso de Backend com PHP Moderno.
2. Passo a Passo de Instalação e Configuração
📥 Passo 1: Download e Instalação
Siga as instruções oficiais correspondentes ao seu sistema operacional (Windows, Linux ou macOS):
- Baixe o pacote oficial da ferramenta diretamente do site do mantenedor.
- Execute o assistente de instalação habilitando a opção de adicionar os binários à variável de ambiente PATH.
⚙️ Passo 2: Verificação no Terminal
Abra uma nova janela de terminal e valide se o comando está acessível:
💻 Passo 3: Configuração no Editor / IDE
- Instale as extensões recomendadas para obter destaque de sintaxe, autocompletar e linters integrados.
- Reinicie o editor para carregar os novos caminhos de execução.
3. Teste Rápido de Validação
Crie um arquivo de teste simples para comprovar que o compilador, interpretador ou ferramenta está operando com 100% de sucesso.
🎯 Próximos Passos
Com o ambiente configurado, você está pronto para iniciar as aulas práticas e desenvolver os projetos da disciplina.
Setup 03: Ambiente Docker com Nginx, PHP-FPM e MySQL 🛠️
Objetivo da Configuração
Objetivo: Stack completa de microsserviços PHP rodando isolada em containers Docker.
1. Pré-Requisitos e Visão Geral
A configuração correta deste ambiente é fundamental para o desenvolvimento eficiente e sem atritos ao longo do curso de Backend com PHP Moderno.
2. Passo a Passo de Instalação e Configuração
📥 Passo 1: Download e Instalação
Siga as instruções oficiais correspondentes ao seu sistema operacional (Windows, Linux ou macOS):
- Baixe o pacote oficial da ferramenta diretamente do site do mantenedor.
- Execute o assistente de instalação habilitando a opção de adicionar os binários à variável de ambiente PATH.
⚙️ Passo 2: Verificação no Terminal
Abra uma nova janela de terminal e valide se o comando está acessível:
💻 Passo 3: Configuração no Editor / IDE
- Instale as extensões recomendadas para obter destaque de sintaxe, autocompletar e linters integrados.
- Reinicie o editor para carregar os novos caminhos de execução.
3. Teste Rápido de Validação
Crie um arquivo de teste simples para comprovar que o compilador, interpretador ou ferramenta está operando com 100% de sucesso.
🎯 Próximos Passos
Com o ambiente configurado, você está pronto para iniciar as aulas práticas e desenvolver os projetos da disciplina.
Setup 04: Depuração com Xdebug e Testes com PHPUnit 🛠️
Objetivo da Configuração
Objetivo: Configuração do debugger Xdebug no VS Code e suíte de testes unitários automatizados.
1. Pré-Requisitos e Visão Geral
A configuração correta deste ambiente é fundamental para o desenvolvimento eficiente e sem atritos ao longo do curso de Backend com PHP Moderno.
2. Passo a Passo de Instalação e Configuração
📥 Passo 1: Download e Instalação
Siga as instruções oficiais correspondentes ao seu sistema operacional (Windows, Linux ou macOS):
- Baixe o pacote oficial da ferramenta diretamente do site do mantenedor.
- Execute o assistente de instalação habilitando a opção de adicionar os binários à variável de ambiente PATH.
⚙️ Passo 2: Verificação no Terminal
Abra uma nova janela de terminal e valide se o comando está acessível:
💻 Passo 3: Configuração no Editor / IDE
- Instale as extensões recomendadas para obter destaque de sintaxe, autocompletar e linters integrados.
- Reinicie o editor para carregar os novos caminhos de execução.
3. Teste Rápido de Validação
Crie um arquivo de teste simples para comprovar que o compilador, interpretador ou ferramenta está operando com 100% de sucesso.
🎯 Próximos Passos
Com o ambiente configurado, você está pronto para iniciar as aulas práticas e desenvolver os projetos da disciplina.
Sobre
Sobre o Curso
🎓 Desenvolvimento Web com PHP e Laravel
Este curso foi projetado para capacitar o aluno a desenvolver aplicações web modernas utilizando PHP 8.x e o framework Laravel, aplicando arquitetura MVC, boas práticas de desenvolvimento, segurança e APIs REST.
🎯 Objetivos do Curso
-
:material-php: PHP Moderno (8.x) --- Dominar as novas funcionalidades do PHP, tipagem forte, atributos e gerenciamento de dependências com Composer.
-
Framework Laravel 10+ --- Aprender o ecossistema Laravel, desde rotas e controllers até o Eloquent ORM e Blade Template Engine.
-
Segurança e APIs --- Implementar autenticação robusta, proteção contra ataques comuns (CSRF, XSS) e desenvolver APIs REST profissionais.
-
DevOps e Deploy --- Configurar ambientes com Docker, automação de testes e realizar o deploy de aplicações em ambientes de produção.
📚 Módulos do Curso
Módulo 1 – Fundamentos e PHP Moderno
- Evolução do PHP e PSRs
- POO e Namespaces
- Instalação e Estrutura do Laravel
- Sistema de Rotas e Controllers
Módulo 2 – Core e Banco de Dados
- Views com Blade e Layouts
- Migrations, Seeders e Factories
- Relacionamentos Eloquent (1:1, 1:N, N:N)
- CRUD Completo e Validação
Módulo 3 – Segurança e APIs
- Autenticação (Breeze/Jetstream)
- Policies e Gates (Controle de Acesso)
- API Resources e Versionamento
- Testes Automatizados (TDD)
Módulo 4 – Ecossistema Avançado
- Storage e Upload de Arquivos
- Filas (Jobs), Eventos e Listeners
- Docker para Desenvolvimento
- Deploy em VPS/Cloud
🛠️ Metodologia
Foco prático orientado por mini-projetos a cada aula. Ao final, o aluno desenvolverá um sistema completo (como um Kanban ou E-commerce) para compor seu portfólio profissional.
Pronto para se tornar um desenvolvedor Laravel? Começar Agora
Roadmap do Projeto: PHP e Laravel 🚀
Evolução do material didático e metas de aprendizado.
✅ Fase 1: Planejamento (Concluído)
- Syllabus de 16 Aulas (PHP 8.x + Laravel 10)
- Estrutura de diretórios e padrões visuais
- Configuração MkDocs Material (Teal/Amber)
✅ Fase 2: Conteúdo Base (Concluído)
- 16 Aulas em Markdown
- 16 Quizzes interativos
- 16 Listas de Exercícios
- 16 Conjuntos de Slides (RevealJS)
✅ Fase 3: Projetos e UX (Em Andamento)
- Implementação detalhada dos 16 mini-projetos
- Diagramas Mermaid de fluxo e arquitetura
- Exemplos TermynalJS de comandos Artisan
🚀 Fase 4: Lançamento e Produção
- Configuração de CI/CD (GitHub Actions)
- Otimização para dispositivos móveis
- Versionamento com Mike
Status Atual: Em Refatoração Última Atualização: 21/02/2026
Materiais Complementares 📚
Recursos adicionais para apoiar sua jornada no desenvolvimento com PHP e Laravel.
-
Slides --- Material visual das 16 aulas com exemplos de código.
-
Exercícios --- Listas graduais do básico ao desafio.
-
Quizzes --- Validação de conhecimento imediata.
-
Projetos --- Guia de implementação dos mini-projetos e projeto final.
-
Documentação Laravel --- Referência oficial do framework mais amado do PHP.
🏷️ Índice de Tags Didáticas
Navegue pelas aulas, exercícios e projetos do curso organizados por temas, tecnologias e conceitos fundamentais:
tags.md:145-167/name
Versão para Impressão
Esta página foi gerada automaticamente para impressão.