Instruções Gerais:

  • Resolva as atividades em ordem progressiva de maturidade.
  • Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
  • Consulte o gabarito comentado ao final de cada questão para autoavaliação.

🎯 Nível 1: Fundamentos

Problema 15.1 — Tipagem Estrita (declare(strict_types=1)) e Construtores Promovidos

Contexto: Tipagem Estrita (declare(strict_types=1)) e Construtores Promovidos no contexto de Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO.

Requisitos de Execução:

  1. Criar classe com Constructor Property Promotion no PHP 8.

Resultado Esperado

Classe PHP 8 instanciada com tipagem estrita de propriedades.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_15_1_SeuNome
  2. Envie na tarefa: Atividade Cap 15 - Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO
🔑 Gabarito de Código & Solução Comentada
<?php
declare(strict_types=1);

class Usuario {
    public function __construct(
        public readonly int $id,
        public readonly string $nome,
        public readonly string $email
    ) {}
}

$u = new Usuario(1, "Ricardo", "ricardo@empresa.com");
echo "Usuario PHP 8: {$u->nome} ({$u->email})
";

🔍 Nível 2: Prática

Problema 15.2 — Expressão Match e Operador Nullsafe (?->)

Contexto: Expressão Match e Operador Nullsafe (?->) no contexto de Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO.

Requisitos de Execução:

  1. Mapear códigos de status HTTP para mensagens com expressão match e acessar propriedades nulas com ?->.

Resultado Esperado

Sintaxe moderna PHP 8 processando estados com segurança.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_15_2_SeuNome
  2. Envie na tarefa: Atividade Cap 15 - Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO
🔑 Gabarito de Código & Solução Comentada
<?php
declare(strict_types=1);

function obterMensagemStatus(int $codigo): string {
    return match ($codigo) {
        200 => "OK - Sucesso",
        404 => "Not Found - Nao Encontrado",
        500 => "Internal Server Error",
        default => "Status Desconhecido"
    };
}

echo obterMensagemStatus(200) . "
";

⚡ Nível 3: Integração

Problema 15.3 — PDO Seguro com Prepared Statements e Transações

Contexto: PDO Seguro com Prepared Statements e Transações no contexto de Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO.

Requisitos de Execução:

  1. Conectar ao SQLite via PDO executando inserções parametrizadas dentro de bloco de transação.

Resultado Esperado

Operações de banco de dados no PHP blindadas contra SQL Injection.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_15_3_SeuNome
  2. Envie na tarefa: Atividade Cap 15 - Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO
🔑 Gabarito de Código & Solução Comentada
<?php
declare(strict_types=1);

$pdo = new PDO("sqlite::memory:");
$pdo->exec("CREATE TABLE contas (id INT, saldo REAL)");
$stmt = $pdo->prepare("INSERT INTO contas VALUES (?, ?)");
$stmt->execute([1, 5000.0]);

echo "Transacao PDO executada com sucesso.
";

🏆 Nível 4: Desafio Corporativo

Problema 15.4 — Criação de Middleware de Autenticação PSR-15

Contexto: Criação de Middleware de Autenticação PSR-15 no contexto de Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO.

Requisitos de Execução:

  1. Implementar interface de middleware interceptando requisições e validando token de autorização.

Resultado Esperado

Padrão PSR-15 homologado para frameworks modernos (Laravel / Symfony).

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_15_4_SeuNome
  2. Envie na tarefa: Atividade Cap 15 - Linguagem PHP: PHP 8 Moderno, Tipagem Estrita e POO
🔑 Gabarito de Código & Solução Comentada
<?php
declare(strict_types=1);

interface MiddlewareInterface {
    public function processar(array $request): bool;
}

class AuthMiddleware implements MiddlewareInterface {
    public function processar(array $request): bool {
        return isset($request['token']) && $request['token'] === 'SECRET_123';
    }
}

$m = new AuthMiddleware();
echo "Acesso autorizado: " . ($m->processar(['token' => 'SECRET_123']) ? 'SIM' : 'NAO') . "
";