CakePHP Baking – usando terminal para gerar CRUD: Chegamos ao momento que costumo chamar de “a virada de chave” para qualquer desenvolvedor que escolhe o CakePHP. Se você acompanhou nossa trilha até aqui, já preparou o ambiente, configurou o banco de dados e entendeu a estrutura de pastas. Agora, imagine se você pudesse estalar os dedos e ter todo o código de um sistema pronto, com validações, formulários e listagens, sem digitar uma única linha de PHP.
Como especialista em desenvolvimento ágil, preparei este oitavo artigo para apresentar o Bake. Prepare o seu terminal: vamos aprender como o código “Shell” pode gerar CRUDs em segundos e por que isso vai revolucionar a sua produtividade qualquer um dos seus projetos!
Baking: Como usar o código “Shell” para gerar CRUDs em segundos
No desenvolvimento web, a sigla CRUD (Create, Read, Update, Delete) representa as operações básicas de qualquer sistema. Criar esses formulários e lógicas repetitivas manualmente é o que consome 70% do tempo de um projeto inicial. O CakePHP resolve isso com o Bake, um console de linha de comando (CLI) que atua como um mestre de obras, construindo a estrutura da sua aplicação a partir do esquema do seu banco de dados.
O Bake não é apenas um “gerador de código”; ele é um executor inteligente que aplica todas as convenções que discutimos no artigo 5, garantindo que seu código nasça seguindo as melhores práticas de mercado.
1. O que é o Bake e como ele funciona?
O Bake é um shell script que reside na pasta bin/ do seu projeto. Ele “lê” as tabelas do seu banco de dados (que conectamos no artigo anterior) e entende os tipos de campos, as chaves estrangeiras e as restrições. Com base nessa leitura, ele utiliza templates pré-definidos para escrever os arquivos da Model, do Controller e das Views (Templates).
A grande vantagem? O código gerado não é um “código sujo”. Ele é limpo, utiliza o ORM do CakePHP e já vem com comentários e tipos de dados do PHP 8.
2. Preparando o Terreno para o Baking
Para que o Bake faça um trabalho de excelência, seu banco de dados precisa estar bem estruturado. Se você usou as Migrations (artigo 6), você já está meio caminho andado.
Imagine uma tabela artigos:
id(INT, PK, AI)titulo(VARCHAR 150)corpo(TEXT)publicado(BOOLEAN)created(DATETIME)modified(DATETIME)
Se o Bake encontrar essa estrutura, ele saberá que o titulo deve ser um campo de texto simples, o corpo um textarea e o publicado um checkbox.
3. Comandos Essenciais do Bake
Abra o terminal na raiz do seu projeto. O comando principal é o bin/cake bake. Se você rodar apenas isso, verá uma lista de tudo o que pode ser gerado: de classes de teste a comandos de console personalizados.
Gerando o CRUD Completo (The “All” Command)
Este é o comando que todo desenvolvedor CakePHP ama. Ele gera a Model (Table e Entity), o Controller e todas as Views de uma só vez:
Bash
bin/cake bake all artigos
O que acontece em segundos?
- Model/Table/ArtigosTable.php: Criada com regras de validação automáticas (ex: o campo
titulonão pode ser vazio). - Model/Entity/Artigo.php: Criada com as propriedades mapeadas.
- Controller/ArtigosController.php: Criado com os métodos
index,view,add,editedeleteprontos. - templates/Artigos/: Quatro arquivos
.phpcriados com HTML e formulários integrados ao framework.
4. Anatomia do Código Gerado
Vamos olhar o que o Bake fez por você no Controller, por exemplo. Ele não apenas criou a função, mas também adicionou a lógica de tratamento de erros e mensagens de sucesso (Flash Messages).
PHP
// src/Controller/ArtigosController.php (Simplificado)
public function add()
{
$artigo = $this->Artigos->newEmptyEntity();
if ($this->request->is('post')) {
$artigo = $this->Artigos->patchEntity($artigo, $this->request->getData());
if ($this->Artigos->save($artigo)) {
$this->Flash->success(__('O artigo foi salvo com sucesso.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Não foi possível salvar o artigo. Tente novamente.'));
}
$this->set(compact('artigo'));
}
Imagine digitar isso para cada tabela do seu sistema. Com o Bake, isso é instantâneo.
5. Baking de Relacionamentos: A Inteligência Artificial do Framework
Aqui está o “pulo do gato” que surpreende muita gente. Se você tem uma tabela categorias e na tabela artigos existe um campo categoria_id, o Bake identifica essa relação BelongsTo.
Ao rodar o bake all artigos, ele automaticamente:
- Cria a associação na Model.
- No formulário de “Adicionar Artigo”, ele gera um Select Box (Dropdown) já populado com todas as categorias cadastradas no banco.
Isso elimina um dos trabalhos mais chatos do desenvolvimento web: buscar dados de outra tabela apenas para preencher um campo de seleção.
6. Personalizando o seu “Bolo”
Muitos desenvolvedores perguntam: “Mas e se eu quiser que o código gerado seja diferente?”. O CakePHP permite que você crie seus próprios Bake Templates.
Se você trabalha com algum framework css – (sou muito fã do MaterializeCSS), você pode copiar os arquivos de template do Bake para dentro da sua pasta src/ e editá-los. Assim, toda vez que você rodar o comando bake, o HTML gerado já virá com as classes CSS do Materialize aplicadas.
7. Boas Práticas: Quando usar o Bake?
O Bake é perfeito para o início do projeto. Ele cria o “esqueleto” funcional. No entanto, lembre-se:
- Não tenha medo de apagar: O código gerado é seu. Se a View ficou com campos demais, abra o arquivo e delete o que não precisa.
- Sobrescrita: Se você rodar o comando de novo em uma tabela que já tem arquivos, o Bake perguntará se você deseja sobrescrevê-los. Cuidado! Se você já customizou o código, perderá suas alterações.
- Prototipagem Rápida: Use o Bake para mostrar uma versão funcional do sistema para um cliente ou para validar uma ideia de SaaS em horas, não dias.
Conclusão CakePHP Baking: De Programador a Maestro
CakePHP Baking: O uso do Baking no CakePHP muda a sua relação com o tempo. Em vez de gastar energia com o básico (CRUD), você gasta sua inteligência criando as regras de negócio complexas, otimizando a performance e cuidando da experiência do usuário.
O Bake não substitui o desenvolvedor; ele o empodera. Ele remove o trabalho braçal e deixa o caminho livre para a criatividade. Com um banco de dados bem planejado e o comando bake all, você consegue colocar um sistema administrativo inteiro de pé em menos de 10 minutos.
Agora que você já tem o seu CRUD funcionando e “assado”, é hora de entender o que está acontecendo por baixo do capô das suas Tabelas e Entidades. No próximo artigo, veremos: “Table Objects vs Entities: Entendendo a manipulação de dados.”
Mas antes de dominar o CakePHP, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no CakePHP, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados.
Dica CakePHP Baking: Se você estiver com preguiça de criar as tabelas no MySQL para testar o Bake, use o plugin de Migrations que vimos no artigo 6. Crie a migration, rode o migrate e depois o bake. É o fluxo de trabalho mais rápido que existe no ecossistema PHP.










