🚀 Capítulo 20: O Confronto Final (Tema: Vingadores - Ultron Parte 2)

NOTE

Este capítulo utiliza a temática de Ultron para o Projeto Final do curso de PHP e Laravel. Junte todos os conhecimentos para derrotar a ameaça!


1. 🎯 Objetivo da Aula

Aplicar todos os conceitos aprendidos ao longo dos 19 capítulos anteriores para construir uma API Rest completa no Laravel, entendendo o fluxo completo de uma aplicação profissional.

2. 🏢 O Cenário Prático (Seu Desafio)

Chegou o momento do confronto final contra Ultron! Para vencer essa batalha, os Vingadores precisam de um sistema unificado que integre tudo o que aprendemos:

  1. Variáveis e Arrays para guardar os dados dos heróis (Cap 1 e 2).
  2. Estruturas de Decisão para escolher a melhor estratégia (Cap 3).
  3. POO para modelar os personagens (Cap 10).
  4. Laravel para criar as rotas seguras e controllers (Cap 14 e 15).
  5. Migrations e Eloquent para salvar os relatórios da batalha no banco (Cap 16 e 17).
  6. Validação para impedir dados falsos do Ultron (Cap 18).
  7. Autenticação para garantir que apenas heróis acessem o painel (Cap 19).

O seu desafio final é construir a API de Gerenciamento de Missões dos Vingadores!


🧠 O Fluxo do Projeto Final

🗺️ 1. As Rotas (routes/api.php):

Criar rotas para registrar usuários, fazer login e gerenciar as missões.

Route::post('/registrar', [AuthController::class, 'registrar']);
Route::post('/login', [AuthController::class, 'login']);
 
// Rotas protegidas
Route::middleware('auth:sanctum')->group(function () {
    Route::get('/missoes', [MissaoController::class, 'index']);
    Route::post('/missoes', [MissaoController::class, 'store']);
});

🕵️‍♂️ 2. O Model e Migration (Missao):

Criar a tabela de missões com campos como titulo, descricao e status.

🧠 3. O Controller (MissaoController):

Aplicar a validação nos dados recebidos e usar o Eloquent para salvar no banco!


4. 📖 Exemplo Guiado: O Código da Vitória

Veja como ficaria o método de salvar uma missão no Controller, aplicando quase tudo o que aprendemos:

<?php
namespace App\Http\Controllers;
use App\Models\Missao;
use Illuminate\Http\Request;
 
class MissaoController extends Controller {
    public function store(Request $request) {
        // 1. Validação (Cap 18)
        $request->validate([
            'titulo' => 'required|min:5',
            'descricao' => 'required'
        ]);
 
        // 2. Eloquent para salvar (Cap 17)
        $missao = new Missao();
        $missao->titulo = $request->titulo;
        $missao->descricao = $request->descricao;
        $missao->save();
 
        return response()->json([
            'mensagem' => 'Missão cadastrada com sucesso! Vingadores, avante!',
            'dados' => $missao
        ], 201);
    }
}
?>

5. 🛠️ Prática Obrigatória: Revisão Geral

Com base em todo o curso:

  1. Qual é a diferença entre usar PHP puro (com include e arquivos .txt) e usar um framework como o Laravel com banco de dados para criar um sistema profissional?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 20 PHP_UltronP2) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

spec_backend_com_php_e_laravel/
├── capitulos/
│   └── capitulo_20_ultron_p2.md

💡 Checkpoint de Lógica

Parabéns por chegar até aqui! Você agora domina os conceitos fundamentais do Backend com PHP e Laravel. Continue praticando e construindo seus próprios projetos para se tornar um desenvolvedor sênior!

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática:

  1. O PHP puro exige que você construa toda a estrutura de segurança, conexão com banco e organização de arquivos do zero. Já o framework Laravel traz uma estrutura profissional pronta e testada (MVC, ORM, Validação, Autenticação), permitindo que você foque apenas na lógica do seu negócio e desenvolva sistemas muito mais seguros e rápidos!

Capitulo Anterior