O que é CakePHP?
CakePHP é um conjunto de scripts e bibliotecas em PHP, OpenSource visando automatizar ações corriqueiras na vida de um programador como CRUD (Create,Read,Update,Delete) de informações usando o modelo MVC.
Como ele trabalha?
O CakePHP trabalha usando o modelo MVC e com convenção de nomes, ou seja, dentro de uma estrutura MVC cada seção tem uma forma de nomenclatura que veremos a seguir:
Banco de dados:
Tabelas:
As tabelas devem ser nomeadas no plural seguindo a pluralização da gramática inglesa. Exemplos: users, pages, usuarios, stories.
Chaves Primárias:
As chaves primárias devem ser nomeadas com "id". Veremos como alterar o id padrão do CakePHP mais adiante.
Chaves Estrangeiras:
As chaves estrangeiras de outras tabelas devem se chamar TabelaSingular_id. Exemplo: Salas possui N Alunos. Na tabela alunos, além da chave primária "id", teremos uma chave estrangeira "sala_id" que referenciará a sala em que o aluno se encontra.
MVC:
Model:
Para cada tabela, o CakePHP necessita de uma Model para gerenciar seu conteúdo e esta deve ser nomeada no singular, ou seja, para uma tabela usuarios a model terá o nome de Usuario.php.
Controller:
Costuma-se ter uma controller para cada model mas podem haver mais. Elas recebem o nome no plural, no caso, UsuariosController.php
View:
As views, interface que o usuário fará interação (forms, inputs de dados) são organizadas dentro de um diretório com nome da Model no plural, no caso Usuarios, e dentro um arquivo com o nome da função dentro da controller, Usuarios/lista.ctp (referenciando a função lista existente dentro da controller Usuarios)
URL e fluxo de renderização:
Situação1: O usuário, ainda não cadastrado em nosso sistema, deseja se cadastrar e acessa a url: http://nossodominio.com.br/users/add
Analisando:
Primeira parte, temos o domínio do nosso site http://nossodominio.com.br/, nada de muito especial. Segunda parte, temos users/add, esse nome remete à seguinte estrutura do CakePHP:
Model: app/Model/User.php
Controller: app/Controller/UsersController.php com chamada para a function add();
View: app/View/Users/add.ctp
ou seja, assim que o usuário acessar essa url o cake seguirá o fluxo: Carregar Model/User.php e Controller/UsersController.php, chamar a function add() e renderizar a view Users/add.ctp.
Abaixo a assinatura do método add dentro da UsersController.php
function add(){
### SomeCode ###
}
Situação2: O usuário quer editar o post de id=3 já inserido no banco de dados e acessa a url:
http://nossodominio.com.br/posts/edit/3
Analisando:
Ele fará a mesma coisa da url de usuários com um diferencial; a função edit dentro da PostsController.php espera um parâmetro que é o id do post. Este id é passado na url após o nome da função.
Abaixo a assinatura do método edit dentro da PostsController.php
function edit($id){
### SomeCode ###
}
Conhecendo o básico, veremos como automatizar geração de código através de um modelo de dados SQL usando a Bakery do Cakephp.
Até breve!