Como gerar código automaticamente com o CakeBake do CakePHP
Veja nesse artigo como gerar código automaticamente com o padeiro (baker) do CakePHP, o CakeBake, ideal para aplicações que estejam no início. Com ele podemos criar as três camadas do modelo MVC de forma simples e prática.
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.
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.
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.
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.
-- Estrutura da tabela `posts`
`titulo` int(11) NOT NULL,
-- Restrições para a tabela `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".
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.
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.
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".
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.
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.