Capítulo 28
Symfony: painel e entrega
2 min de leitura 419 palavras 1 gravura
Neste capítulo você vai listar recados recentes e preparar checklist de entrega PHP. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.
Seu ponto de partida
Use o exemplo 28-symfony-painel do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.
Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.
Como praticar
Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.

Painel simples
Uma página /painel lista os últimos recados. Sem autenticação real complexa neste recorte — aviso de estudo no topo.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
<p role="status">Área de estudo local — não publicar.</p>
Mude uma coisa e preveja
Limite a lista a 10 itens.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
No máximo 10 recados.
Se não acontecer
Query setMaxResults ou slice.
Variáveis de ambiente de estudo
.env.local fica fora do zip público. APP_SECRET de estudo não se reutiliza.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
APP_ENV=dev
APP_SECRET=somente-estudo
Mude uma coisa e preveja
Confira se .env.local está no ignore.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Não versionar segredo.
Se não acontecer
Veja .gitignore do exemplo.
Encerrar o módulo PHP
Symfony cobre páginas PHP estruturadas. Se a equipe for Python, Django/FastAPI bastam. Não acumule stacks sem necessidade.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
uma stack por problema
Mude uma coisa e preveja
Anote se Symfony entra no seu fechamento.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Decisão registrada.
Se não acontecer
Volume 32 organiza a escolha.
Atividades
Atividade 1
O painel deste volume é produção?
Atividade 2
Onde não colocar APP_SECRET?
Atividade 3
Precisa aprender Symfony e Django juntos?
Respostas comentadas
Resposta da atividade 1
Não; estudo local.
Resposta da atividade 2
Zip público / repositório aberto.
Resposta da atividade 3
Não; escolha conforme o contexto.
O arquivo completo
Referência do exemplo 28-symfony-painel, reproduzida aqui para que você possa conferir sem sair da página.
public/index.php
<?php
declare(strict_types=1);
session_start();
$recados = array_slice(array_reverse($_SESSION["recados"] ?? [
["autor"=>"Lia","mensagem"=>"Oi","criadoEm"=>date("c")],
]), 0, 10);
?><!DOCTYPE html>
<html lang="pt-BR"><head><meta charset="utf-8"><title>Painel</title></head>
<body>
<p role="status">Área de estudo local — não publicar.</p>
<h1>Painel — últimos recados</h1>
<ol><?php foreach ($recados as $r): ?>
<li><?= htmlspecialchars($r["autor"].": ".$r["mensagem"], ENT_QUOTES, "UTF-8") ?></li>
<?php endforeach; ?></ol>
</body></html>