O que é Framework: um Framework nada mais é do que um conjunto de funcionalidade compartilhadas por uma família de aplicações, o Framework fornece uma estrutura genérica para se construir uma aplicação deixando para os programadores somente as regras de negócio . Os Frameworks normalmente fornecem funções como validação, tratamento de requisições, persistência de dados etc.

É importante não confundir um framework web com um CMS(Sistema de Gerenciamento de Conteúdo) que é uma aplicação que inclusive pode ser construída com um Framework.

O CakePHP

O CakePHP é um Framework de desenvolvimento rápido web em PHP, suas principais características são:

  • Código aberto
  • Utiliza a arquitetura MVC
  • Possui um robusto sistema de persistência de dados que facilita as operações CRUD
  • Utiliza URLs amigáveis(mod_rewrite)
  • Estrutura de diretórios simples e clara

Pode-se fazer o download da ultima versão na página do projeto http://cakephp.org/

Arquitetura MVC

O CakePHP como a maioria dos Frameworks web utiliza a arquitetura MVC que divide a aplicação em três camadas Modelo(Model), Visão(View) e Controle(Controller) para torná-la de mais fácil manutenção permitindo que alterações em uma das camadas causem pouca influencia nas outras.

  • Modelo(Model): Representa os dados que a aplicação manipula. Suas regras de validação e persistência.
  • Visão(View): É a apresentação dos dados para o usuário, normalmente uma página HTML mas pode gerar outros tipos de documentos como PDF, XML,XLS, etc.
  • Controle(Controller): É onde se processa e responde as requisições do usuário e pode invocar alterações no Model.

Exemplo de uma requisição feita ao CakePHP

O cliente(1) faz uma requisição ao Dispatcher(componente responsável por encaminhar requisições) que identifica qual Controller deve ser chamado e repassa a requisição para ele(2).

O controle verifica qual ação deve tomar(regras de negócio), e se necessário utiliza o Model salvando ou lendo dados(3,4) e após passa o controle para o View(5).

O View então trata de formatar a resposta e a envia para o cliente(6).

Exemplo de Requisição ao CakePHP

http://localhost/cake/contatos/infocontato/1

  • Controller: contatos
  • Método: infocontato
  • Paramêtro: 1

Vejamos agora a estrutura de diretórios do CakePHP

Nossa aplicação fica dentro da pasta app

  • config: Contém os arquivos de configuração. Detalhes das conexões ao banco de dados, bootstrapping, arquivos de configuração do núcleo e outros devem ser armazenados aqui.
  • controllers: Contém os controladores da sua aplicação e seus componentes.
  • locale: Guarda os arquivos com as strings para internacionalização.
  • models: Contém os modelos da sua aplicação.
  • plugins: Contém os pacotes de plugins.
  • tmp: Aqui é onde o CakePHP armazena os arquivos temporários. Esta pasta normalmente é usada para guardar a descrição dos modelos, logs e outras informações, como as das sessões.
  • vendors: Qualquer classe ou biblioteca de terceiro deve ser armazenada aqui.
  • views: Arquivos de apresentação devem vir aqui: elements, páginas de erro, helpers, layouts e arquivos de view.
  • webroot: No modo de produção, esta pasta deve servir como a pasta raiz da sua aplicação. Dentro desta pasta são guardados os arquivos públicos, como estilos CSS, imagens e arquivos de JavaScript.

Agora vamos a um vídeo de como montar um cadastro simples utilizando o CakePHP. A tabela no banco de dados que iremos manipular será esta

CREATE TABLE(
    Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    telephone VARCHAR(255) NOT NULL,
    endereco VARCHAR(255) NOT NULL
);

Download do vídeo