Este documento fornece uma introdução ao framework PHP CakePHP. Resume as seguintes informações essenciais:
1) O CakePHP é um framework popular e flexível para desenvolvimento web com PHP usando o padrão MVC.
2) Ele fornece muitos recursos prontos como scaffolding, helpers, componentes e internacionalização.
3) O CakePHP usa uma estrutura de pastas padronizada e segue convenções claras para desenvolvimento rápido.
3. Quem sou eu...
• Rangel Xavier – 25 anos
• Sistemas de Informação
• Aluno do Mestrado em Eng. de Software
• Design & Desenvolvedor
• J!platform/CSS/HTML
• PHP
4. O que é?
• O CakePHP é um framework para
desenvolvimento de aplicações e
websites, de forma que os
programadores/desenvolvedores
possam trabalhar simples.
5. O que é?
• Qualquer programador, seja de qualquer
nível, pode sim, aprender o cakePHP
tranquilamente, pois, além de uma vasta
documentação, o framework é muito bem
organizado. Tudo isso totalmente
gratuito.
6. História
• Michal Tatarynowicz
• Ano 2005
• Quando Ruby on Rails começou a
ganhar popularidade entre os
desenvolvedores.
• Versão 2.x
7. Motivos para utilizar
• Ativo e com comunidade amigável;
• Licença flexível;
• Compatibilidade com PHP 4 e PHP 5;
• Integrando funcionalidade CRUD (Create, Read, Update and
Delete, ou Criar, Ler, Atualizar e Excluir) para interagir com o
banco de dados;
• Aplicações scaffolding;
• Geração de código;
• Arquitetura MVC (Model, View, Controller, ou Modelo, Visões,
Controlador);
• Requisições ao expedidor com clareza, URLs personalizáveis e
rotas;
8. Motivos para utilizar
• Validações internas;
• Templates rápidos e flexíveis (Sintaxe PHP e com
ajudantes);
• Ajudantes para usar AJAX, JavaScript, HTML, formulários e
outros nas visões;
• Componentes de E-mail, Cookie, Segurança, Sessões,
Manipulação de Requisições e outros;
• Flexibilidade com cache;
• Internacionalização;
• Funciona em qualquer subdiretório do seu website, com
poucas configurações no Apache
9. O que é aprender?
• Orientação Objeto
• PHP OO
• HTML e CSS
• JS
• Convenções e particularidades do
cakephp
11. Objetos e Classes
• Objetos reais possuem duas
características. Estado e
Comportamento. Por exemplo, um
cachorro tem nome, raça, idade, tamanho
e etc, e existem também
comportamentos, como abanar o rabo,
latir e “acasalam nas pernas alheias”.
12. Objetos e Classes
• Exemplo mais simples:
• No objeto lâmpada:
– Estado: Acesa e Apagada
– Comportamento: Ser acesa e ser apagada;
• Então, tudo pode ser um objeto. Concordam?
• A partir de agora, ESTADO = ATRIBUTO e
COMPORTAMENTO = MÉTODOS/FUNÇÕES
13. Objetos e Classes
• Classes são a base ou template para
criação do nosso objeto. Ela define
nossos atributos e nossos métodos
utilizados.
• Vamos criar nossa primeira classe.
14. Objetos e Classes
• Classe
– Primeiro passo é criarmos nosso arquivo
animal.class.php.
– Iremos criar a Class Animal, com atributos
espécie, raça, nome, cor;
– Iremos também criar o nosso
compartamento, ops! nosso método falar;
5 min
15. Objetos e Classes
• Objeto
– Agora criaremos o objeto baseado na nossa
classe animal.
– Crie um objeto $animal e inicialize
(chamemos a partir de agora de instanciar).
– Palavra chave: new
5 min
16. Objetos e Classes
• Voltar para Classe
– Criar nosso método falar();
– Adicionaremos um novo atributo chamado
som, e iremos chama-lo dentro de nosso
método;
– Vamos fazer juntos!
17. Herança
• O processo de “ramificar” uma classe, chama-se
Herança.
• Como assim tio?
• Tenho uma classe Cachaça, com atributos,
$teor_alcoolico, $ml e $idade, podemos criar
uma classe chamada Uisque, a qual, irá herdar
todas as características da classe pai.
• Vamos exemplificar
18. Esquenta!
• Criar uma Classe Pessoa, com atributos,
nome, altura, peso, ano de nascimento;
• Criar os métodos
– calcularIdade();
– calcularIMC();
– IMC = Massa / Altura²
20. PHP do “tempo do ronca”
• Falta de Padrões;
• Programação Orientada a Gambiarra,
tornando o programador “doidim”;
• Qualquer um desenvolvia;
• Linguagem para pequenos projetos;
• Script Kiddies, sobrinhos e “amigos que
mexem com informática”
22. O que são?
• É uma coleção de
códigos-fonte,
classes, funções,
técnicas e
metodologias que
facilitam o
desenvolvimento
de novos softwares
23. O que são comum
entre eles?
• Ao olharmos atentamente para os
principais frameworks de
desenvolvimento para PHP, podemos
observar que algumas tecnologias e
técnicas são comuns à maioria deles.
24. Design Patterns
• Padrões de Projetos, são formas já
testadas e documentadas de se resolver
certo tipo de problemas.
25. Modelo, Controle e
Visão
• O padrão MVC é a separação de lógica e
apresentação, sendo que isso favorece o
trabalho em equipe.
• Dessa forma, qualquer mudança, por
exemplo, na apresentação, teria pouco
ou nenhum impacto nas demais camadas
da aplicação.
26. Active Record
• Facilita a manipulação de dados contidos em uma
base de dados por aplicações desenvolvidas com
o paradigma orientadas a objetos.
• Desta forma, não é necessário que o
desenvolvedor conheça uma linguagem de
manipulação de dados como SQL, além de manter
toda a aplicação desenvolvida no paradigma
orientado a objetos.
27. AJAX
• Existem diversas bibliotecas para se utilizar as
funcionalidades do AJAX em suas aplicações
facilmente. Entre elas, pode-se citar o Dojo e o
Prototype. Alguns frameworks utilizam estas
bibliotecas para facilitar o desenvolvimento de
aplicações. O CakePHP e o Symfony, são
principais neste quesito.
28. Internacionalização
• É o processo de permitir que seja facilmente
modificada o idioma da interface e de
mensagens da aplicação.
• Para facilitar o desenvolvimento deste tipo de
aplicações, é necessário que o framework
utilizado possua suporte a essa característica.
• A partir do CakePHP 2.x, essa funcionalidade foi
implementada.
34. +e-
• Pequeno e Leve;
• Sem tantas configurações;
• Framework mais utilizado;
• 2º lugar no Ranking de Frameworks PHP (Europa);
• Documentação boa;
• ORM #fail; (Data Mapper)
• E muito muito muito mais
40. Diretório “pai”
/app/
/config – arquivos de configuração. Ex.: DB, Email
/console – onde fica o bake (feito tudo pelo terminal)
/controller – onde fica nossos controladores
/lib – bibliotecas de terceiros
/locale – pasta para colocar arquivos de idioma
/model – onde fica nosso models
/plugins – local de nossos plugins
/test – para colocar nossos testes unitários.
/tmp – os arquivos temporarios/cache/logs.
/vendor – scritps, classes, componentes de terceiros.
/view – arquivos da view
/webroot – arquivos de estilo, javascripts e afins.
41. Outros conceitos
• Helpers: “Ajudantes”, ele auxiliam a
criação de algo dentro da aplicação. Ex.:
Formulário, Gerenciamento de Cache,
HTML entre outros;
• Cada controller o qual é necessário
utilização de algum helper, pode ser
informado por meio de uma array $helpers.
Veja a sintaxe:
43. Helpers Padrões
• CacheHelper
• FormHelper
• HtmlHelper
• JsHelper
• NumberHelper (Número e formatos de moedas)
• Paginator
• RSS
• SessionHelper
• TextHelper (Formação de textos “inteligentes”);
• TimeHelper (Formatação de data e hora)
44. Scaffolding
• É uma técnica que permite ao
desenvolvedor definir e criar uma
aplicação básica que possa inserir,
selecionar, atualizar e excluir objetos,
inserindo apenas o atributo/objeto
$scaffold em seu controller.
46. Componentes
• Componentes (components) são pacotes
com funções que são usadas para serem
utilizada entre os controllers.
• Se você está querendo copiar e colar coisas
entre seus controllers, talvez seja uma boa
ideia considerar a possibilidade de
empacotar estas funcionalidades em
componentes.
47. Componentes Padrões
O CakePHP também já vem com uma quantidade fantástica de
componentes incluídos, que você pode usar para lhe ajudar
com:
• Segurança
• Sessões
• Lista de Controle de Acesso (do inglês ACL, Access control
lists)
• Emails
• Cookies
• Autenticação
• Tratamento de Requisições
50. Verdadeiro ou Falso
• O Helpers auxiliam o desenvolvedor na
criação de Sessões e manipulação no BD;
• Os componentes são conjunto de códigos
que são utilizados várias vezes entre os
Controllers;
• O diretório principal do CakePHP é o lib;
• O scaffolding faz uma simulação automática
de minha aplicação;
51. Verdadeiro ou Falso
• O Helpers auxiliam o desenvolvedor na
criação de Sessões e manipulação no BD;
• Os componentes são conjunto de códigos
que são utilizados várias vezes entre os
Controllers;
• O diretório principal do CakePHP é o lib;
• O scaffolding faz uma simulação automática
de minha aplicação;
53. Controllers
• Os controllers fornecem uma série de
métodos que são chamados de ações.
Ações são métodos em um controller
que manipulam requisições. Por padrão,
todos os métodos públicos em um
controller são ações e acessíveis por
urls.
54. Controllers
• A classe AppController é a mãe de
todos os outros controllers da sua
aplicação. O próprio AppController é
estendida da classe Controller que faz
parte da biblioteca do CakePHP.
• Todos seus controllers devem ser
estendida desta.
57. Controllers
• Atributos:
$name
O atributo deve ser definido com o nome do controller.
Normalmente é apenas a forma plural do nome do model principal
que o controller usa. Esta propriedade não é requerida mas salva o
CakePHP de ter que flexionar o nome do model para chegar no
valor correto.
63. Views
• A camada responsável pela visualização
da interface. Aqui ficará nosso HTML e o
mínimo de PHP possível.
• 90% HTML e 10% PHP;
64. Views
• Para cada controller, é necessário criar
um diretório com o seu nome do e
dentro dela os arquivos com os nomes
de cada ação.
• Certinho?
65. Views - Exemplo
• Existe um Controller chamado Alunos, e neste
controller existe uma ação inserirnota() e
calcularmedia();
• Irei criar uma pasta dentro de /Views/ com o
nome do Controller, Alunos, e dentro dessa
pasta, cada ação do Controller, ganhará um
arquivo específico com a extensão .ctp;
• Ficando desta maneira
73. Configuração
• Gerar outro novo código de segurança,
nosso atributo security.salt no arquivo
config/core.php
• Para simular um projeto real, iremos gerar
uma chave segura.
• http://www.md5encrypter.com/
• Gerar outro código para o security.
cipherSeed.
74. Configuração BD
• Próximo passo é configurar o banco de
dados. No nosso arquivo
database.php.default
• Precisamos criar nosso banco de dados
e nossa tabela.
• Veja:
75. Banco de Dados
• Padrão das tabelas, sempre no PLURAL.
• Nome do Banco: projetocake
• Nome da Tabela: Noticias
• Campos: id, titulo, conteudo, autor,
created e modified
76. Revisão
• Tabelas do Banco: Plural
• Model: Singular
• Controller: Plural seguido o nome
Controller;
78. Pergunta 01
• Quem é o responsável pela comunicação
dos dados com o Banco?
a) View
b) Database
c) Model
d) DataMapper
79. Verdadeiro ou Falso
• Para cada método do meu Controller, é
necessário criar um arquivo .ctp dentro da
pasta com o nome de meu Controller;
• Models são no singular e as tabelas no
banco de dados;
• As validações são feita no Controller
• As views é a parte da aplicação onde fica
mais código PHP.
80. Verdadeiro ou Falso
• Para cada método do meu Controller, é
necessário criar um arquivo .ctp dentro da
pasta com o nome de meu Controller;
• Models são no singular e as tabelas no
banco de dados;
• As validações são feita no Controller;
• As views é a parte da aplicação onde fica
mais código PHP;
82. Meu 1º Controller
• Criar um arquivo NoticiasController.php
• Criar Class com o mesmo nome do
arquivo;
• Fazer a herança;
• Inicializar o atributo $name;
Tempo: 15 min
83. Meu 1º Controller
• Vamos utilizar na prática agora no
Scaffolding;
• Para isto basta inicializar nosso atributo
public $scaffold;
• Vamos olhar a mágica!
84. Meu 1º Controller
• Por padrão, o cakePHP busca o método
index();
• Então criaremos o método index();
• Outro erro? Por que?
• Criamos o nosso arquivo index.ctp em
nossa view.
85. Meu 1º Controller
• Enviar um atributo conteúdo um valor,
por exemplo, “Todos as noticias”.
• Para isso, basta utilizar a função set(),
visto anteriormente;
$this->set(‘atributo’, ‘valor’);
Tempo: 15 min
86. Minha 1ª view
• Vamos colocar apenas um titulo em html
e “echoar” o nome de nossa variável,
que enviamos para nossa view.
Funcionou?
o/o/o/o/o/o/o/o/o/o/o/o/o/
87. Minha 1ª Model
• Essa é com vocês!
• Como cria uma model?
• Singular ou Plural?
• Herda de quem?
Tempo: 15 min
88. Inserir dados
Inserir dados direto no banco, para
testarmos nossa capturar de dados;
Entre no seu SGBD e coloquem textos
fictícios em nossos campos;
Tempo: 10 min
89. Capturar dados
• Para capturar os dados do banco
utilizando find();
$this->Model->find(‘all’);
90. Find()
• O método find() captura os dados da
base;
• Os parâmetros possíveis para esse
método são:
'all', 'first','count', 'list', 'neighbors' or 'thr
eaded'
94. Index Finalizado
• Com isso finalizamos nosso primeiro
método!
• Criamos o método index();
• Criamos o arquivo index.ctp;
• Enviamos para a view todos os dados do
banco;
• Editamos o layout da View;
95. Método delete()
• O que vamos utilizar?
– Passar por parâmetro da função o id ao qual
quer deletar. Se existir, utilize o método
$this->Model->delete($id);
– Nada na view;
Tempo: 20 min
97. Método adicionar()
• O que vamos utilizar?
– $this->Model->save($this->data);
– $this->data;
• É um array contendo os dados enviado da view, via
POST ou GET.
– Vamos utilizar nosso primeiro Helper, para criar
nosso Formulário na camada View, no arquivo
adicionar.ctp;
98. FormHelper
FormHelper::create(string $model = null, array
$options = array());
É o método para iniciar a criação do
nosso formulário. Ele que criará o
cabeçalho de nosso formulário. Podemos
definir o method, action e name do
formulário. Por padrão o method é POST;
100. FormHelper
• Para cada campo do nosso formulários,
os “inputs” é o FormHelper oferece um
método simples para isso.
echo $this->Form->input(‘campo',
array('label' => ‘Minha Label'));
102. Criar view adicionar
Vocês vão criar todos os campos que
desejamos no Formulário de Adicionar,
utilizando o FormHelper e em seguida
iremos testar nossa aplicação.
Tempo: 30 min
103. SetFlash
Para uma mensagem de alerta nos
controllers, o Componente Session nos
da um método para isto. O método
SetFlash.
$this->Session->SetFlash(‘Mensagem’);
104. Redirect
Para redirecionarmos de um
controller para outro, o CakePHP nos
disponibiliza um método para isto.
$this->redirect(array(‘action’=>’pra
onde vai’))
105. HtmlHelper
O CakePHP também disponibiliza um
Helper para o HTML dentro de nossas
views, veremos agora alguns métodos
utilizado.
106. HtmlHelper
HtmlHelper::image(string $path, array $options = array())
Parameters:
$path (string) – Path to the image.
$options (array) – An array of html attributes.
Exemplo:
echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP'));
Saida:
<img src="/img/cake_logo.png" alt="CakePHP" />
O caminho padrão das imagens é o: /app/webroot/img/.:
107. HtmlHelper
HtmlHelper::link(string $title, mixed $url = null, array $options =
array(), string $confirmMessage = false)
Parameters:
$title (string) – O texto a ser exibido;
$url (mixed) – Para onde será enviado;
$options (array) – An array of html attributes.
Exemplo:
echo $this->Html->link('Enter', '/pages/home', array('class' => 'button',
'target' => '_blank'));
Saida:
<a href="/pages/home" class="button" target="_blank">Enter</a>
108. Método view()
public function view($id = null) {
$this->Model->id = $id;
$this->set(‘atributo', $this->Model->read());
}
110. Exercício
Método Listar, para exibir o conteúdo.
$titulo
Feito por: $autor
$conteudo
$data
<tr>
http://localhost/noticias/listarNoticias
Titulo deve apostar para o método View
Tempo: 40 min
111. Exercício
Criar uma calculadora, com métodos
somar, subtrair, dividir e multiplicar,
passando os valores apenas pela URL.
112. Exercício
Criar uma calculadora, com métodos
somar, subtrair, dividir e multiplicar,
passando os valores apenas pela URL,
utilizando o FormHelper