SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
CakePHP


           Elton Luís Minetto




          PHP Conference Brasil
Agenda

•   O que é o CakePHP
•   Conceitos básicos
•   Requisitos
•   Instalação
•   Configuração
•   Aplicação de exemplo




                           PHP Conference Brasil
O que é o CakePHP

Cake é um framework para PHP que usa
padrões de desenvolvimento conhecidos como
ActiveRecord e MVC. A idéia principal é ser um
framework estruturado que permita a usuários
PHP de todos os níveis desenvolver aplicações
web rubustas sem perda da flexibilidade.




                             PHP Conference Brasil
Vantagens

• Licensa flexível (MIT)
• Compatibilidade com PHP4 e PHP5
• Geração de CRUD para interação com BD
• Arquitetura MVC
• Validações
• Templates
• Ferramentas que auxiliam gerar Javascript,
AJAX, forms HTML, etc
• Comunidade ativa
• Funciona em qualquer subdiretório web, com
pouca configuração do Apache.


                           PHP Conference Brasil
Conceitos - MVC

Separação da estrutura da aplicação em três
partes distintas: Modelo, Visão e Controle:

    • Modelo: gerencia os dados da aplicação
    • Visão: gerencia a saída gráfica e textual
      da parte da aplicação visível ao usuário
    • Controle: interpreta as entradas de
      mouse     e     teclado    do     usuário,
      comandando a Visão e o Modelo para se
      alterarem de forma apropriada.



                             PHP Conference Brasil
Conceitos - Diretórios
/app - aplicação
   /config – arquivos de configuração, DB, etc
   /controllers – controladores da aplicação
   /index.php – página inicial da aplicação
   /models – modelos da aplicação
   /plugins
   /tmp – usado para chache e logs
   /vendors – bibliotecas de terceiros
   /views – visões da aplicação
       /elements – elementos, pedaços da visão
       /errors – páginas de erros customizadas
       /helpers – ajudantes para gerar código
       /layots – arquivos de layout
       /pages – visões estáticas
   /webroot – DocumentRoot para aplicação
       /css – arquivos css
       /files – arquivos comuns
       /img – imagens
       /js – Javascripts
                                         PHP Conference Brasil
/cake – código fonte do cake
Requisitos
• Servidor web com as funcionalidades:
sessions, mod_rewrite (não obrigatório mas
aconselhável)
• PHP 4.3.2 ou superior
• Uma base dados. Atualmente é suportado
MySQL, PostgreSQL e AdoDB. Futuramente
Oracle - se meu patch for aceito :-)




                             PHP Conference Brasil
Instalação
• Download do arquivo em
http://cakephp.org/downloads
• Descompactar e copiar para o diretório root
do servidor Web. No Ubuntu:

tar xfvj cake_1.1.10.3825.tar.bz2
mv mv cake_1.1.10.3825 /var/www/cake

• Testar no navegador no endereço:
http://localhost/cake




                              PHP Conference Brasil
Configuração Apache
É necessário duas configurações: o
mod_rewrite e o AllowOverride precisam estar
ativos.
Alterar o httpd.conf (apache2.conf no Ubuntu)
e descomentar ou adicionar as linhas :
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Adicionar a linha abaixo no DocumentRoot e
reiniciar o Apache:
AllowOverride all




                                   PHP Conference Brasil
talk is cheap...


 ...show me the code!




                   PHP Conference Brasil
Desenvolvendo
A aplicação
Um professor gostaria de uma aplicação web
simples para manter-se informado sobre os
livros que empresta a seus alunos. Quanto ele
entre no sistema pode visualizar e alterar os
alunos cadastrados e também os empréstimos.




                             PHP Conference Brasil
Desenvolvendo
A modelagem




                   PHP Conference Brasil
Desenvolvendo
O Cake segue algumas regras de padronização
para a base de dados:
 ●
   Todas as tabelas devem estar no plural
 ●
   A chave primaria para todas as tabelas deve
   ser o campo “id”
 ●
   Para utilizar chave estrangeira, deve possuir
   nome da tabela no singular acrescido do
   campo id. Ex: “usuario_id”.
 ●
   O relacionamento “n – n”, deve ser
   organizado em ordem alfabética, e o
   primeiro nome no singular acrescido de um
   “_” nome segunda tabela plural. Ex:
   livro_usuarios;
                               PHP Conference Brasil
Desenvolvendo
Modelagem adaptada:




                      PHP Conference Brasil
Desenvolvendo
Iniciando a aplicação
O cake possui uma excelente ferramenta para
geração da aplicação e de várias partes de
código. A ferramenta chama-se bake.




                            PHP Conference Brasil
Desenvolvendo
Criando um projeto:
cd /var/www/cake/
php cake/scripts/bake.php -project /var/www/cake/conference
Após responder y para as perguntas, toda a
estrutura de diretórios é criada.
Depois de criado o projeto é necessário criar a
aplicação.




                                            PHP Conference Brasil
Desenvolvendo
Criando uma aplicação:
php cake/scripts/bake.php -app conference
Várias perguntas serão feitas neste momento:
 ●
     What database driver would you like to use?
     (mysql/mysqli/mssql/sqlite/postgres/odbc) – qual
     database. Neste caso mysql
 ●
     What is the hostname for the database server? - localhost
 ●
     What is the database username? - elton (ou outro usuario)
 ●
     What is the database password? - senha
 ●
     What is the name of the database you will be using? - qual
     é a base de dado usada. Neste exemplo cake. Esta base de
     dados e as tabelas devem ser previamente criadas.




                                            PHP Conference Brasil
Desenvolvendo

 ●
     Enter a table prefix? - caso as tabelas tenham algum
     prefixo no seu nome. Neste caso – n
 ●
     Look okay? (y/n) – confirmar com y caso tudo esteja
     correto
Neste momento foi criado as configurações de
conexão com a base de dados da aplicação.
Estas configurações foram salvas em
/var/www/cake/conference/config/database.
php
e podem ser alteradas posteriormente.




                                         PHP Conference Brasil
Desenvolvendo
Agora é solicitado a opção de gerar o Modelo, a
Visão ou o Controle da aplicação.
Gerando o Modelo: O bake conecta na base de
dados e encontra as tabelas existentes. Você
pode escolher para qual das tabelas irá criar o
modelo. Inicialmente vamos escolher a tabela
Livro digitando seu número da lista mostrada.
 ●
     Would you like to supply validation criteria for the fields in
     your model? (y/n)- se deseja fornecer critérios de
     validação para os campos da tabela. Neste caso y. É
     apresentado cada um dos campos e, de acordo com seu
     tipo na tabela é apresentado algumas validações. Por
     exemplo o campo id pode ser validado para
     VALID_NOT_EMPTY ou VALID_NUMBER.


                                            PHP Conference Brasil
Desenvolvendo

●
     Would you like to define model associations (hasMany,
     hasOne, belongsTo, etc.)? (y/n) – se é necessário definir
     associações entre os modelos. Existem quatro associações:
     ●
       hasOne: possui um
     ●
       hasMany: possui muitos
     ●
       belongsTo: pertence a
     ●
       hasAndBelongsToMany: tem e pertence a muitos
     Neste modelo não é preciso associação.
●
    Cake test suite not installed. Do you want to bake unit test
    files anyway? (y/n) - se é preciso gerar os arquivos para o
    PHPUnit. Neste caso n




                                          PHP Conference Brasil
Desenvolvendo
Agora é preciso criar o Controle. Executando
novamente o comando:
php cake/scripts/bake.php -app conference
 ●
     Possible Controllers based on your current database –
     escolher o Livros
 ●
     Would you like bake to build your controller interactively? -
     y
 ●
     Would you like this controller to use other models besides
     'Livro'? (y/n) – se é necessário usar mais de um modelo.
     Neste caso n
 ●
     Would you like this controller to use other helpers besides
     HtmlHelper and FormHelper? (y/n) – se são necessários
     outros ajudantes além do gerador de Html e Forms. Pode
     ser usado o de Ajax. Neste momento n




                                            PHP Conference Brasil
Desenvolvendo
●
    Would you like this controller to use any components?
    (y/n) – se é preciso usar algum componente especial. n
●
    Would you like to use Sessions? (y/n) – usar sessões
    sempre é interessante, então y
●
    Would you like to include some basic class methods
    (index(), add(), view(), edit())? (y/n) - aqui está toda a
    graça de usar o bake. Ele pede se deseja criar métodos
    básicos como o de adição, exclusão,etc. Responder y reduz
    um monte de trabalho depois.
●
    Would you like to create the methods for admin routing?
    (y/n) – neste caso n
●
    y para confirmar e n para a geração dos arquivos para o
    PHPUnit




                                        PHP Conference Brasil
Desenvolvendo
E, finalmente, para gerar a Visão, executar
novamente o comando anterior, escolher a
opção V e o número do Livros.
 ●
     Would you like to create some scaffolded views (index,
     add, view, edit) for this controller? - ele vai criar a visão
     para os métodos básicos de inserção, exclusão, etc.
     Responder y
 ●
     Would you like to create the views for admin routing?
     (y/n) – n

Pronto. Está criado a primeira parte da
aplicação. O mesmo pode ser feito para a
tabela usuarios.


                                             PHP Conference Brasil
Desenvolvendo




                PHP Conference Brasil
Desenvolvendo
A tabela livro_usuarios é uma tabela
associativa. Assim, no momento da geração do
modelo deve ser respondido y para a pergunta:
Would you like to define model associations
(hasMany, hasOne, belongsTo, etc.)? (y/n)
O bake vai automaticamente identificar a
existência do relacionamento:
LivroUsuario belongsTo Usuario? (y/n) – y
LivroUsuario belongsTo Livro? (y/n) - y




                             PHP Conference Brasil
Desenvolvendo




                PHP Conference Brasil
Customizando
Na visão de adição de empréstimos aparece o
código do aluno e o código do livro. Vamos
alterar para aparecer o nome. No arquivo
controllers/livro_usuarios_controller.php
no método add() existe uma linha:
$this->set('usuarios', $this->LivroUsuario->Usuario->generateList());


O generateList() é usado para gerar um array
com os dados da tabela. Quando não são
passados parâmetros o array é gerado apenas
com os ids da tabela.


                                            PHP Conference Brasil
Customizando
Alterando para :
$this->set('usuarios', $this->LivroUsuario->Usuario-
>generateList(null, 'nome', null,'{n}.Usuario.id',
'{n}.Usuario.nome'));


Desta forma o array é gerado com id como
chave e o nome do usuário como valor. Assim é
gerado na tela um select mais interessante. O
mesmo pode ser feito com o livro:

$this->set('livros', $this->LivroUsuario->Livro->generateList(null,
'titulo', null, '{n}.Livro.id', '{n}.Livro.titulo'));




                                              PHP Conference Brasil
Customizando




               PHP Conference Brasil
Customizando - Ajax
O Cake possui uma série de Helpers para
auxiliar no desenvolvimento. Um destes
Helpers é o de Ajax. Ele usa as bibliotecas
JavaScript Prototype e script.aculo.us que
devem ser copiadas para o diretório
webroot/js/
da aplicação.
Vamos fazer um pequeno exemplo. Uma
pequena busca de livros usando Ajax.
Primeiro é preciso criar um novo controlador
para a aplicação. No diretório controllers foi
criado um novo arquivo, chamado
buscas_controller.php:
                               PHP Conference Brasil
Customizando - Ajax
<?php
class BuscasController extends AppController
{

     var $name = 'Buscas';
     var $helpers = array('Html', 'Ajax' ); //uso dos helpers
     var $uses = array(quot;Livroquot;); //indica qual modelo usar

     //funcao da pagina inicial
     function index()
     {
      }

     //funcao que sera executada por AJAX para retornar os livros
     function update ()
     {
         $consulta = $this->params[quot;formquot;][quot;tituloquot;].quot;%quot;;
         $this->set('livros',$this->Livro->findAll(quot;titulo LIKE '$consulta'quot;));
         $this->layout = quot;ajaxquot;;
     }
}
?>
                                                   PHP Conference Brasil
Customizando - Ajax
O próximo passo é criar as visões. No diretório
views deve-se criar um diretório para as views
da aplicação. Neste caso chamamos de buscas.
Os arquivos correspondentes aos métodos do
controlador foram criados:
index.thtml
update.thtml




                              PHP Conference Brasil
Customizando - Ajax
index.thtml
<?php echo $html->charsetTag('UTF-8')?>
<?php echo $javascript->link('prototype')?>
<?php echo $javascript->link('scriptaculous.js?load=effects')?>

<?php echo $ajax->form(array('action' => '/buscas/update'), 'livro',
array('update' => 'resultados')); ?>
<input type=quot;textquot; name=quot;tituloquot;>
<input type=quot;submitquot; value=quot;Pesquisarquot;>
<div id=quot;resultadosquot;> </div>

As primeiras linhas carregam os arquivos .js necessários.
Com o $ajax->form é criado um formulário cujo action é
a função update. Os outros parâmetros são o modelo
(livro) e as opções (neste caso está definindo que a
função update vai alterar a div resultados).


                                             PHP Conference Brasil
Customizando - Ajax
update.thtml
<?php echo $ajax->div('resultados'); ?>
<?php foreach($livros as $livro) {
    echo $livro['Livro']['titulo'].quot;<br>quot;;
}
?>
<?php echo $ajax->divEnd('resultados'); ?>


Este é o código que irá mostrar os resultados.




                                             PHP Conference Brasil
Conclusões
•Desenvolver usando frameworks facilita a
padronização e trabalho em equipe.
•Acelera o ciclo de desenvolvimento.
•Cake é fácil de aprender.
•Cake usa uma estrutura de arquivos prática e
simples
•Tem um nome legal :-)




                             PHP Conference Brasil
Referências

• http://www.cakephp.org
• http://www.cakephp.com.br




                          PHP Conference Brasil
Contato

Elton Luís Minetto
eminetto@gmail.com
http://www.eltonminetto.net




                       PHP Conference Brasil

Contenu connexe

Tendances

Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Thyago Maia
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Fernando Gonçalves
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhosandreandrade17
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETJosé Corrêa Viana
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Thyago Maia
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)Mario Sergio
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 

Tendances (20)

Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2
 
Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)Desenvolvendo para web ASP.Net (Overview para iniciantes)
Desenvolvendo para web ASP.Net (Overview para iniciantes)
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Apresentando o CakePHP
Apresentando o CakePHPApresentando o CakePHP
Apresentando o CakePHP
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhos
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NET
 
Dreamweaver cs5
Dreamweaver cs5Dreamweaver cs5
Dreamweaver cs5
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 

En vedette

Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
CakePHP para iniciantes
CakePHP para iniciantesCakePHP para iniciantes
CakePHP para iniciantesIgor Feghali
 
CakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsCakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsEmerson Soares
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHPFernando Palma
 

En vedette (7)

Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Plugins
PluginsPlugins
Plugins
 
CakePHP para iniciantes
CakePHP para iniciantesCakePHP para iniciantes
CakePHP para iniciantes
 
CakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsCakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no Windows
 
PPT - A slice of cake php
PPT - A slice of cake phpPPT - A slice of cake php
PPT - A slice of cake php
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 

Similaire à CakePHP

Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkFlávio Lisboa
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português BrLuiz Ladeira
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7Silvano Oliveira
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraDavid O'Keefe
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPAndréia Santos
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPMarcelo Andrade
 

Similaire à CakePHP (20)

Crud
CrudCrud
Crud
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Php
PhpPhp
Php
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português Br
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Apostila MVC
Apostila MVCApostila MVC
Apostila MVC
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHP
 
Palestra
PalestraPalestra
Palestra
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 

Plus de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Plus de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

CakePHP

  • 1. CakePHP Elton Luís Minetto PHP Conference Brasil
  • 2. Agenda • O que é o CakePHP • Conceitos básicos • Requisitos • Instalação • Configuração • Aplicação de exemplo PHP Conference Brasil
  • 3. O que é o CakePHP Cake é um framework para PHP que usa padrões de desenvolvimento conhecidos como ActiveRecord e MVC. A idéia principal é ser um framework estruturado que permita a usuários PHP de todos os níveis desenvolver aplicações web rubustas sem perda da flexibilidade. PHP Conference Brasil
  • 4. Vantagens • Licensa flexível (MIT) • Compatibilidade com PHP4 e PHP5 • Geração de CRUD para interação com BD • Arquitetura MVC • Validações • Templates • Ferramentas que auxiliam gerar Javascript, AJAX, forms HTML, etc • Comunidade ativa • Funciona em qualquer subdiretório web, com pouca configuração do Apache. PHP Conference Brasil
  • 5. Conceitos - MVC Separação da estrutura da aplicação em três partes distintas: Modelo, Visão e Controle: • Modelo: gerencia os dados da aplicação • Visão: gerencia a saída gráfica e textual da parte da aplicação visível ao usuário • Controle: interpreta as entradas de mouse e teclado do usuário, comandando a Visão e o Modelo para se alterarem de forma apropriada. PHP Conference Brasil
  • 6. Conceitos - Diretórios /app - aplicação /config – arquivos de configuração, DB, etc /controllers – controladores da aplicação /index.php – página inicial da aplicação /models – modelos da aplicação /plugins /tmp – usado para chache e logs /vendors – bibliotecas de terceiros /views – visões da aplicação /elements – elementos, pedaços da visão /errors – páginas de erros customizadas /helpers – ajudantes para gerar código /layots – arquivos de layout /pages – visões estáticas /webroot – DocumentRoot para aplicação /css – arquivos css /files – arquivos comuns /img – imagens /js – Javascripts PHP Conference Brasil /cake – código fonte do cake
  • 7. Requisitos • Servidor web com as funcionalidades: sessions, mod_rewrite (não obrigatório mas aconselhável) • PHP 4.3.2 ou superior • Uma base dados. Atualmente é suportado MySQL, PostgreSQL e AdoDB. Futuramente Oracle - se meu patch for aceito :-) PHP Conference Brasil
  • 8. Instalação • Download do arquivo em http://cakephp.org/downloads • Descompactar e copiar para o diretório root do servidor Web. No Ubuntu: tar xfvj cake_1.1.10.3825.tar.bz2 mv mv cake_1.1.10.3825 /var/www/cake • Testar no navegador no endereço: http://localhost/cake PHP Conference Brasil
  • 9. Configuração Apache É necessário duas configurações: o mod_rewrite e o AllowOverride precisam estar ativos. Alterar o httpd.conf (apache2.conf no Ubuntu) e descomentar ou adicionar as linhas : LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c Adicionar a linha abaixo no DocumentRoot e reiniciar o Apache: AllowOverride all PHP Conference Brasil
  • 10. talk is cheap... ...show me the code! PHP Conference Brasil
  • 11. Desenvolvendo A aplicação Um professor gostaria de uma aplicação web simples para manter-se informado sobre os livros que empresta a seus alunos. Quanto ele entre no sistema pode visualizar e alterar os alunos cadastrados e também os empréstimos. PHP Conference Brasil
  • 12. Desenvolvendo A modelagem PHP Conference Brasil
  • 13. Desenvolvendo O Cake segue algumas regras de padronização para a base de dados: ● Todas as tabelas devem estar no plural ● A chave primaria para todas as tabelas deve ser o campo “id” ● Para utilizar chave estrangeira, deve possuir nome da tabela no singular acrescido do campo id. Ex: “usuario_id”. ● O relacionamento “n – n”, deve ser organizado em ordem alfabética, e o primeiro nome no singular acrescido de um “_” nome segunda tabela plural. Ex: livro_usuarios; PHP Conference Brasil
  • 14. Desenvolvendo Modelagem adaptada: PHP Conference Brasil
  • 15. Desenvolvendo Iniciando a aplicação O cake possui uma excelente ferramenta para geração da aplicação e de várias partes de código. A ferramenta chama-se bake. PHP Conference Brasil
  • 16. Desenvolvendo Criando um projeto: cd /var/www/cake/ php cake/scripts/bake.php -project /var/www/cake/conference Após responder y para as perguntas, toda a estrutura de diretórios é criada. Depois de criado o projeto é necessário criar a aplicação. PHP Conference Brasil
  • 17. Desenvolvendo Criando uma aplicação: php cake/scripts/bake.php -app conference Várias perguntas serão feitas neste momento: ● What database driver would you like to use? (mysql/mysqli/mssql/sqlite/postgres/odbc) – qual database. Neste caso mysql ● What is the hostname for the database server? - localhost ● What is the database username? - elton (ou outro usuario) ● What is the database password? - senha ● What is the name of the database you will be using? - qual é a base de dado usada. Neste exemplo cake. Esta base de dados e as tabelas devem ser previamente criadas. PHP Conference Brasil
  • 18. Desenvolvendo ● Enter a table prefix? - caso as tabelas tenham algum prefixo no seu nome. Neste caso – n ● Look okay? (y/n) – confirmar com y caso tudo esteja correto Neste momento foi criado as configurações de conexão com a base de dados da aplicação. Estas configurações foram salvas em /var/www/cake/conference/config/database. php e podem ser alteradas posteriormente. PHP Conference Brasil
  • 19. Desenvolvendo Agora é solicitado a opção de gerar o Modelo, a Visão ou o Controle da aplicação. Gerando o Modelo: O bake conecta na base de dados e encontra as tabelas existentes. Você pode escolher para qual das tabelas irá criar o modelo. Inicialmente vamos escolher a tabela Livro digitando seu número da lista mostrada. ● Would you like to supply validation criteria for the fields in your model? (y/n)- se deseja fornecer critérios de validação para os campos da tabela. Neste caso y. É apresentado cada um dos campos e, de acordo com seu tipo na tabela é apresentado algumas validações. Por exemplo o campo id pode ser validado para VALID_NOT_EMPTY ou VALID_NUMBER. PHP Conference Brasil
  • 20. Desenvolvendo ● Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) – se é necessário definir associações entre os modelos. Existem quatro associações: ● hasOne: possui um ● hasMany: possui muitos ● belongsTo: pertence a ● hasAndBelongsToMany: tem e pertence a muitos Neste modelo não é preciso associação. ● Cake test suite not installed. Do you want to bake unit test files anyway? (y/n) - se é preciso gerar os arquivos para o PHPUnit. Neste caso n PHP Conference Brasil
  • 21. Desenvolvendo Agora é preciso criar o Controle. Executando novamente o comando: php cake/scripts/bake.php -app conference ● Possible Controllers based on your current database – escolher o Livros ● Would you like bake to build your controller interactively? - y ● Would you like this controller to use other models besides 'Livro'? (y/n) – se é necessário usar mais de um modelo. Neste caso n ● Would you like this controller to use other helpers besides HtmlHelper and FormHelper? (y/n) – se são necessários outros ajudantes além do gerador de Html e Forms. Pode ser usado o de Ajax. Neste momento n PHP Conference Brasil
  • 22. Desenvolvendo ● Would you like this controller to use any components? (y/n) – se é preciso usar algum componente especial. n ● Would you like to use Sessions? (y/n) – usar sessões sempre é interessante, então y ● Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n) - aqui está toda a graça de usar o bake. Ele pede se deseja criar métodos básicos como o de adição, exclusão,etc. Responder y reduz um monte de trabalho depois. ● Would you like to create the methods for admin routing? (y/n) – neste caso n ● y para confirmar e n para a geração dos arquivos para o PHPUnit PHP Conference Brasil
  • 23. Desenvolvendo E, finalmente, para gerar a Visão, executar novamente o comando anterior, escolher a opção V e o número do Livros. ● Would you like to create some scaffolded views (index, add, view, edit) for this controller? - ele vai criar a visão para os métodos básicos de inserção, exclusão, etc. Responder y ● Would you like to create the views for admin routing? (y/n) – n Pronto. Está criado a primeira parte da aplicação. O mesmo pode ser feito para a tabela usuarios. PHP Conference Brasil
  • 24. Desenvolvendo PHP Conference Brasil
  • 25. Desenvolvendo A tabela livro_usuarios é uma tabela associativa. Assim, no momento da geração do modelo deve ser respondido y para a pergunta: Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) O bake vai automaticamente identificar a existência do relacionamento: LivroUsuario belongsTo Usuario? (y/n) – y LivroUsuario belongsTo Livro? (y/n) - y PHP Conference Brasil
  • 26. Desenvolvendo PHP Conference Brasil
  • 27. Customizando Na visão de adição de empréstimos aparece o código do aluno e o código do livro. Vamos alterar para aparecer o nome. No arquivo controllers/livro_usuarios_controller.php no método add() existe uma linha: $this->set('usuarios', $this->LivroUsuario->Usuario->generateList()); O generateList() é usado para gerar um array com os dados da tabela. Quando não são passados parâmetros o array é gerado apenas com os ids da tabela. PHP Conference Brasil
  • 28. Customizando Alterando para : $this->set('usuarios', $this->LivroUsuario->Usuario- >generateList(null, 'nome', null,'{n}.Usuario.id', '{n}.Usuario.nome')); Desta forma o array é gerado com id como chave e o nome do usuário como valor. Assim é gerado na tela um select mais interessante. O mesmo pode ser feito com o livro: $this->set('livros', $this->LivroUsuario->Livro->generateList(null, 'titulo', null, '{n}.Livro.id', '{n}.Livro.titulo')); PHP Conference Brasil
  • 29. Customizando PHP Conference Brasil
  • 30. Customizando - Ajax O Cake possui uma série de Helpers para auxiliar no desenvolvimento. Um destes Helpers é o de Ajax. Ele usa as bibliotecas JavaScript Prototype e script.aculo.us que devem ser copiadas para o diretório webroot/js/ da aplicação. Vamos fazer um pequeno exemplo. Uma pequena busca de livros usando Ajax. Primeiro é preciso criar um novo controlador para a aplicação. No diretório controllers foi criado um novo arquivo, chamado buscas_controller.php: PHP Conference Brasil
  • 31. Customizando - Ajax <?php class BuscasController extends AppController { var $name = 'Buscas'; var $helpers = array('Html', 'Ajax' ); //uso dos helpers var $uses = array(quot;Livroquot;); //indica qual modelo usar //funcao da pagina inicial function index() { } //funcao que sera executada por AJAX para retornar os livros function update () { $consulta = $this->params[quot;formquot;][quot;tituloquot;].quot;%quot;; $this->set('livros',$this->Livro->findAll(quot;titulo LIKE '$consulta'quot;)); $this->layout = quot;ajaxquot;; } } ?> PHP Conference Brasil
  • 32. Customizando - Ajax O próximo passo é criar as visões. No diretório views deve-se criar um diretório para as views da aplicação. Neste caso chamamos de buscas. Os arquivos correspondentes aos métodos do controlador foram criados: index.thtml update.thtml PHP Conference Brasil
  • 33. Customizando - Ajax index.thtml <?php echo $html->charsetTag('UTF-8')?> <?php echo $javascript->link('prototype')?> <?php echo $javascript->link('scriptaculous.js?load=effects')?> <?php echo $ajax->form(array('action' => '/buscas/update'), 'livro', array('update' => 'resultados')); ?> <input type=quot;textquot; name=quot;tituloquot;> <input type=quot;submitquot; value=quot;Pesquisarquot;> <div id=quot;resultadosquot;> </div> As primeiras linhas carregam os arquivos .js necessários. Com o $ajax->form é criado um formulário cujo action é a função update. Os outros parâmetros são o modelo (livro) e as opções (neste caso está definindo que a função update vai alterar a div resultados). PHP Conference Brasil
  • 34. Customizando - Ajax update.thtml <?php echo $ajax->div('resultados'); ?> <?php foreach($livros as $livro) { echo $livro['Livro']['titulo'].quot;<br>quot;; } ?> <?php echo $ajax->divEnd('resultados'); ?> Este é o código que irá mostrar os resultados. PHP Conference Brasil
  • 35. Conclusões •Desenvolver usando frameworks facilita a padronização e trabalho em equipe. •Acelera o ciclo de desenvolvimento. •Cake é fácil de aprender. •Cake usa uma estrutura de arquivos prática e simples •Tem um nome legal :-) PHP Conference Brasil