Introdução ao gerador de código CakeBake

Todo bom framework deve oferecer, de alguma forma, a possibilidade de gerar código, e o CakePHP como bom framework que é, nos fornece o CakeBake, que é uma aplicação console que faz uma boa parte do trabalho para nós.

Gerando um código muito organizado e limpo, inclusive com comentários nas funções, ele constrói as ações do CRUD e suas views, como também mensagens de erros e sucessos. Embora essas mensagens sejam criadas em inglês, traduzi-las será pouco a fazer comparado ao tempo que economizamos.

Sem mais delongas vamos ao que interessa.

O que é o CakeBake?

O CAkeBake é o nosso “padeiro”, ou seja, é uma aplicação console para gerar código PHP no framework CakePHP, que pode ser muito útil quando estamos começando uma aplicação do zero, já que precisamos que nossas tabelas sigam as normas do framework.

O que é preciso para usar o CakeBake?

Primeiramente é preciso que tenhamos o PHP instalado e configurado no path do sistema. Caso esteja usando uma distribuição Linux, basta instalar a versão mais nova do PHP que o mesmo já é configurado. No caso do Windows, precisamos fazer isso manualmente, configurando as variáveis de ambiente, adicionando o caminho do diretório do PHP. Caso esteja usando o xampp, por exemplo, devemos adicionar o seguinte caminho “c:\xampp\php”, conforme a figura 1.

Configuração das variáveis de ambiente
Figura 1: Configuração das variáveis de ambiente

Em segundo lugar temos que garantir que as tabelas do nosso banco seguem o padrão que o Cake sugere, como, por exemplo, nomes das tabelas devem ter “s” no final. Por exemplo: “produtos, categorias”. Todas as tabelas deve ter um campo chamado “id” como chave primária, inclusive as tabelas criadas para relacionamentos N para N. Podemos conferir as convenções do CakePHP no seguinte link: https://book.cakephp.org/2.0/pt/getting-started/cakephp-conventions.html.

Vamos colocar a mão na massa

Nada melhor que a prática, então vamos testar usando o velho e bom exemplo do Blog, que terá posts e os posts terão categorias. Comece baixando a versão mais recente do CakePHP em www.cakephp.org, extraia os arquivos e renomeie para post. Veja o script do banco de dados na Listagem 1.

Listagem 1: Script do banco de dados


--
-- Estrutura da tabela `categorias`
--
CREATE TABLE IF NOT EXISTS `categorias` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;
--
-- Estrutura da tabela `posts`
--
CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` int(11) NOT NULL,
  `post` text NOT NULL,
  `categoria_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `categoria_id` (`categoria_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
--
-- Restrições para a tabela `posts`
--
ALTER TABLE `posts`
  ADD CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`categoria_id`) REFERENCES `categorias` (`id`);

Banco montado, agora devemos abrir o prompt de comando e acessar o diretório APP do framework, por exemplo, “cd c:\xampp\htdocs\post\app”.

Acesso à pasta app do CakePHP
Figura 2: Acesso à pasta app do CakePHP

Ao entrar na pasta, deve ser apresentado algo como a figura 2.

Vamos afinal usar o bake, bastando acessa-lo centro da pasta Console, da seguinte forma: “Console\cake bake”. Uma tela como a figura 3 deve ser exibida.

Acessando o Bake pelo console
Figura 3: Acessando o Bake pelo console

Como ainda não temos nenhuma conexão com banco pronta, essa é a primeira coisa que o bake faz nessa tela. Serão solicitadas algumas informações tais como:

  • Name: Nome da conexão;
  • Datasource: Banco de Dados usado (MySQL, SQL Server, PostgreSQL, SQLite, etc). Observação: Não é possível se conectar com o Oracle a partir da versão 2, essa conexão é possível apenas nas versões 1.3.x 1.2.x.
  • Persistenent Connection: Para conexões persistentes, y para sim e n para não;
  • Database Host: Host do banco;
  • Port: Porta;
  • User: Nome de ssuário;
  • Password: Senha, caso a senha fique em branco será exibida uma mensagem de confirmação;
  • Database Name: Nome da base de dados a qual se deseja conectar;
  • Table encoding: Codificação da tabela.
Conclusão da conexão com o banco
Figura 4: Conclusão da conexão com o banco

Na figura 4 vemos a última confirmação da nossa conexão, ainda será perguntado se queremos criar mais uma, apenas responda “n” para não. A título de informação podemos configurar diversas conexões, inclusive com outros bancos, para a mesma aplicação sem nenhum problema

Feita a conexão, a aplicação é terminada e devemos executar novamente o bake, mas dessa vez com o parâmetro all, da seguinte forma: “Console\cake bake all”.

Tela exibida após o comando com o parâmetro all
Figura 5: Tela exibida após o comando com o parâmetro all

O bake all irá criar todas as camadas do MVC para nós, e como podemos ver na figura 05 ele mostra os possíveis models que podem ser criados e nos pede para digitar o número do model que queremos executar. Ao escolher, serão exibidas as mensagens de criação dos arquivos e algumas questões sobre baixar o PHPUnit para testar o arquivo gerado, nesses casos responda que não, pois não vamos abordar isso nesse artigo.

A cada chamada de uma tabela será preciso executar novamente o comando “Console\cake bake all”.

Podemos usar o cake bake também para a criação dos arquivos, a diferença entre ele e o “bake all” é que após configurar a conexão podemos usá-la para criar cada arquivo separadamente.

Em determinados casos podemos adicionar componentes e helpers além dos padrões (HtmlHelper e FormHelper).

Pronto! Ao executar todos os dois models, já podemos acessar nossa aplicação.

Bom, pessoal, fico por aqui. Espero que tenham gostado. Comentem, compartilhem e até a próxima.

Links Úteis

  • O que é NuGet?:
    Neste curso aprenderemos o que é o NuGet, o gerenciador de pacotes para projetos .NET.
  • Enums no Java:
    Aprenda nesse microexemplo como criar e utilizar enums no Java. Confira como esse poderoso recurso permite a definição de um conjunto limitado de valores para uma variável.
  • O processo de medição de software:
    Este artigo aborda os principais conceitos do PSM (Practical Software Measurement) aplicados na prática de maneira que torne fácil a adoção do método.

Saiba mais sobre PHP ;)

  • O que é PHP?:
    Neste curso conheceremos o PHP, que é uma linguagem de scripts open source de uso geral, muito utilizada e especialmente adequada para o desenvolvimento web.
  • Primeira Aplicação PHP utilizando MVC:
    Neste curso desenvolveremos uma aplicação padrão de arquitetura MVC e como exemplo faremos um cadastro de usuário persistindo no banco de dados.
  • Curso de PHP Básico:
    Neste curso de PHP básico veremos os princípios de desenvolvimento, como funções nativas do PHP, estruturas de controle, variáveis, orientação a objetos e acesso a banco de dados, sempre utilizando exemplos para explicar cada item.
  • PHP Tutorial:
    Neste artigo apresentaremos dicas e um resumo geral de alguns dos principais artifícios da linguagem PHP.
Assine nossa newsletter!