Instalação e Scaffold - Introdução ao CakePHP
Introdução ao framework CakePHP. Nesse artigo falarei sobre com instalar, algumas normalizações, e scaffold.
Bem vindos ao meu primeiro artigo sobre o CakePHP.
Nesse artigo vou dar inicio a uma sequência sobre os conceitos mais básicos sobre o CakePHP levando em consideração que você já conhece programação em PHP, se não conhece então pode parar por aqui. Neste artigo vou mostrar como fazer a instalação do framework, algumas convenções de banco de dados e também um CRUD básico. Vamos lá.
Introdução
O CakePHP é um dos frameworks PHP mais populares atualmente, tem um MVC bem limpo, é orientado a objeto, tem uma comunidade grande e bem ativa, possui uma ótima documentação incluindo um Cookbook em português, entre outras caracteristicas. Ele é grátis também.
Sua versão mais recente é a 2.1.1(em 01/04/2012), mas a versão 1.3.x ainda sofre atualizações. Vamos seguir essa sequencia baseando-se na versão 2.1.1.
Observação: para bancos de dados Oracle você terá que usar as versões 1.3.x, pois as versões 2.1.x ainda não dão suporte ao banco de dados da Oracle.
Instalação do cake
Baixe o cake nesse link http://cakephp.org/ em sua versão 2.1.1 estável.
Ao final do download você terá um arquivo zipado, então coloque-o na pasta “htdocs” do xampp ou pasta “www” do wamp, para estes posts vou utilizar o XAMPP numa maquina Windows 7, mas não tem diferença para o WAMP. Extraia a pasta para fora do arquivo zipado, e mude o nome dela para o nome do seu projeto, usaremos esse nome para acessar o projeto pela url, eu vou definir o nome simplesmente de “projeto”, mas fica ao seu critério. Instalação concluída.
Dentro da pasta do projeto você verá mas algumas pastas. Por enquanto vamos nos preocupar apenas com a pasta App que é apenas o que vamos precisar para esse primeiro momento.
Dentro da pasta App você tem muito mais pastas, mas não se assuste nada é complicado no CakePHP.
Vamos ver o que são algumas dessas pastas. Pelo menos aquelas que nos interessam agora. Seja paciente logo você estará sistemas muito robustos, então não queira que eu vá contando tudo agora.
Vejamos:
- Config → aqui ficam os arquivos de configuração de banco da dados, rotas, lista de controle de acesso, entre outros.
- Controller → Onde ficam nossa camada de controle e nosso “Componentes”.
- Model → Aqui ficam a camada de interface com os dados. Behaviors e DataSources .
- View → Pastas com as nossa visualizações, layouts, paginas de erros e etc.
- Webroot → Pasta raiz onde ficam nossos scripts .js, css e imagens.
Vamos agora dar inicio de fato a construção do nosso primeiro primeiro projeto que será nada mais que um livro de receitas, no qual cada receita deve ter um autor.
Vamos construir um banco de dados seguindo as normalizações do cake, mas isso não sanguificar que você não pode criar um banco de dados do seu jeito ou usar um que já exista.
Para esse exemplo vou usar o MySql.
Criando o banco de dados
Listagem 1: Criando o banco de dados
create database livrodereceitas; /*Criando a tabela autors*/ CREATE TABLE IF NOT EXISTS `autors` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(45) NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB /*Criando a tabela receitas*/ CREATE TABLE IF NOT EXISTS `receitas` ( `id` INT NOT NULL AUTO_INCREMENT , `title` VARCHAR(45) NOT NULL , `texto` TEXT NOT NULL , `autor_id` INT NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_autor_receita` (`autor_id` ASC) , CONSTRAINT `fk_autor_receita` FOREIGN KEY (`autor_id` ) REFERENCES `autors` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB
Como citado, usei aqui as normalizações do cake para banco de dados. Podemos observar o seguinte: Os nomes das tabelas estão no plural, ou pelo menos com o “s” no final, ou seja, o nome da entidade com um “s” no final; a chave estrangeira é o nome da tabela no singular acompanhado de _id, no nosso caso receita pertence a um autor então autor_id; há também nomes de colunas em inglês, isso torna mais fácil o desenvolvimento pois esse campos serão usados para dysplay da tabela em selects e links quando estivermos montando nossa Views.
Lembrando que tudo isso é opcional, você pode escolher não fazer seguindo as normas e você só terá um pouquinha de trabalho a mais.
Banco criado agora vamos conectar nossa aplicação a ele. Na pasta Confg. Procure pelo arquivo “database.php.default” e troque seu nome para simplesmente “database.php”. Abra-o e você verá o seguinte trecho de código:
Listagem 2: Alterando código do "database.php"
…
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
…
A partir daí fica claro de como é fácil trabalhar com o CakePHP, de cara você já sabe exatamente o que é preciso fazer para configurar a conexão.
Listagem 3: Configurando a conexão.
…
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',// → o banco que você está usando.
'persistent' => false,// → deixe aqui false por enquanto
'host' => 'localhost',// → endereço onde está o banco
'login' => 'user', //→ usuário do banco
'password' => 'password', //→ a senha do usuário
'database' => 'livrodereceitas',// → nome do banco que será usado na conexão
'prefix' => '', //→ deixe aqui vazio por enquanto
//'encoding' => 'utf8',// → encodig que é usado pelo banco.
);
…
Pronto, deve estar tudo pronto agora. Acesse //localhost/nome_do_seu_projeto.
Quase esqueci, o mod_rewrite deve estar ativo no apache para que a mágica do Cake aconteça.
Verás a pagina inicial padrão de todo projeto inicial do cake.

Figura 1. Página Inicial padrão do cake.
Você poderia ter acessado essa página antes de ter configurado a conexão mas veria, além das duas linhas em vermelho, as duas ultimas linhas em amarelo.
- A primeira diz se seu arquivo de configuração esta presente(database.php)
- A ultima notifica se é possível se conectar ao banco.
Quanto as duas linhas em vermelho, não se preocupe com elas agora, isso já está ficando chato não é?
- Com essas 4 ultimas linhas verdes podemos começar a fazer nossa modelagem das entidades.
Criando MVC
Seguindo o MVC vamos começar criando o Model das tabelas receitas e autors utilizando as normas do CakePHP.
Crie um arquivo chamado Receita.php dentro de projeto\app\Model. Implemente o código abaixo
Listagem 4: Arquivo Receita.php
class Receita extends AppModel {
}
<p>E agora vamos criar o arquivo mais um arquivo na mesma pasta Autor.php</p>
<p><strong>Listagem 5</strong>: Arquivo Autor.php</p>
class Autor extends AppModel {
}
Pronto modelagem terminada. Aqui podemos observar algumas normalizações de Model do cake, as tabelas tem seu Model com o nome da classe no singular com a primeira letra em maiúsculo e o arquivo é o nome da classe .php também com a primeira letra em maiúsculo, dessa forma a classe já sabe qual tabela ela é responsável, e deve herdar de AppModel. Com isso terminamos com a camada de Model.
Criando Controller
Agora vamos para o Controller. No diretório projeto/app/Controller crie os seguintes arquivos ReceitasController.php e AutorsController.php com o conteúdo abaixo, respectivamente:
Listagem 6: Arquivo ReceitasController.php
class ReceitasController extends AppController {
public $scaffold;
}
Listagem 7: Arquivo AutorsController.php
class AutorsController extends AppController {
public $scaffold;
}
Aqui também seguimos as normas do Cake o nome dos arquivos e o nome da classe é a função dos nomes da tabela e a palavra Controller(CamelCase), herdam da classe AppController.
Assim está tudo pronto, você acaba de assar seu primeiro bolo, agora basta acessar localhost/projeto/nome_do_controller_no_plural(sem a palavra controller) e começar a explorar seu CRUD.
A criação desse CRUD automático deve-se a variável $scaffold que colocamos nos nossos controladores. Ela indica ao controlador que ele deve gerar os métodos básicos automaticamente. Existem mais algumas opções para deixar o scaffold mais arrojado, como por exemplo a adicção de chaves estrangeiras. Mas você não vai querer sua aplicação toda em inglês e com essa cara de Cake né? Scaffold pode ser muito legal mas é muito limitado. Nos próximos posts vamos começar as personalizações.
E ficamos por aqui, como o intuito desse post é apenas apresentação e uma coceituação bem básica acho que por enquanto já basta para mostrar o poder do CakePHP. No próximo post faremos nossas actions e também a camada de View.
Obrigado e até o próximo post.
Allan Douglas
Analista Programador, com foco nas linguagens Java e PHP, Tecnico em Informática Formado pela Escola Técnica Redentorista - Campina Grande Paraíba. Graduando em Análise de Sistemas pela Estácio do Recife.
2 COMENTÁRIOS



