Your SlideShare is downloading. ×
0
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desenvolvendo aplicações web com o framework cakephp

3,120

Published on

Slides da minha primeira palestra - 1º UruguaianaTech 2009

Slides da minha primeira palestra - 1º UruguaianaTech 2009

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,120
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
92
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desenvolvendo aplicações web com o framework CAKEPHP www.cakephp.org Rodrigo Pletsch Aramburu
  • 2. O que é um framework? <ul><li>Muitas funcionalidades são compartilhados por uma família de aplicações(validação, persistência, etc ...) </li></ul><ul><li>Gasta-se muito tempo provendo e testando estas funcionalidades para cada aplicação </li></ul><ul><li>Um framework fornece um esqueleto de funcionalidades projetado para ser reutilizável </li></ul>
  • 3. O que é o CakePHP <ul><li>Framework de desenvolvimento rápido em PHP </li></ul><ul><li>Utiliza a arquitetura MVC </li></ul><ul><li>ORM - Mapeamento Objeto Relacional </li></ul><ul><li>Utiliza URLs amigáveis(mod_rewrite) </li></ul><ul><li>Estrutura de diretórios simples e clara </li></ul><ul><li>Atualmente na versão 1.2.5 Stable </li></ul>
  • 4. Arquitetura MVC <ul><li>A arquitetura MVC divide a aplicação em três partes para facilitar o desenvolvimento e manutenção: </li></ul><ul><ul><li>Model(Modelo) </li></ul></ul><ul><ul><li>View(Visão) </li></ul></ul><ul><ul><li>Controller(Controle) </li></ul></ul>
  • 5. Modelo(Model) <ul><li>Representam os dados da aplicação </li></ul><ul><li>Normalmente é associado a uma tabela do banco de dados </li></ul><ul><li>É responsável pela persistência dos dados(inserir, atualizar, deletar, buscar) e validação, associação ... </li></ul><ul><li>Definimos os relacionamentos entre os dados </li></ul>
  • 6. Modelo (Model) <ul><li>Exemplo (/app/models/contato.php): </li></ul><ul><li><? </li></ul><ul><li>class Contato extends AppModel{ </li></ul><ul><ul><li>var $name = &quot;Contato&quot;; </li></ul></ul><ul><ul><li>var $validate = array( </li></ul></ul><ul><ul><ul><li>&quot;nome&quot;=>array( </li></ul></ul></ul><ul><ul><ul><ul><ul><li>‘ rule’=>VALID_NOT_EMPTY, </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>‘ message’=>’O nome do contato deve ser preenchido’ </li></ul></ul></ul></ul></ul><ul><ul><li>); </li></ul></ul><ul><li>} </li></ul><ul><li>?> </li></ul>
  • 7. Associações entre Modelos(Model) <ul><li>hasOne (Um Usuário tem um Perfil. ) </li></ul><ul><li>belongsTo (Um Artigo pertence a uma Categoria) </li></ul><ul><li>hasMany (Uma Categoria tem muitos Artigos) </li></ul><ul><li>belongsAndHasMany (Um cliente loca vários DVDs , um DVD é locado por vários clientes) </li></ul>
  • 8. Associações entre Modelos(Model) <?php class Funcionario extends AppModel{ var $name = &quot;Funcionario&quot;; ... var $belongsTo = array(&quot;Empresa&quot;); } ?> ---------------------------------------------------- <?php class Empresa extends AppModel{ var $name = “Empresa&quot;; ... var $hasMany = array(“Funcionario&quot;); } ?>
  • 9. Associações entre Modelos(Model)
  • 10. Controle(Controller) <ul><li>Responsável pelo tratamento das requisições feitas pelo cliente </li></ul><ul><li>Executa a lógica especifica da aplicação </li></ul><ul><li>As operações do banco de dados são feitas através de uma instância do modelo na camada de controle $this->Contato->save($dados) </li></ul><ul><li>Define os dados a serem utilizados na Visão(view) </li></ul>
  • 11. Controle (Controller) <ul><li>Exemplo(/app/controllers/contatos_controller.php): </li></ul><ul><li><? </li></ul><ul><ul><li>class ContatosController extends AppController{ </li></ul></ul><ul><ul><ul><li>var $name = &quot;ContatosController&quot;; </li></ul></ul></ul><ul><ul><ul><li>var $uses = array(“Contato”); </li></ul></ul></ul><ul><ul><ul><li>var helpers =array(“Html”,”Form”,”Javascript”); </li></ul></ul></ul><ul><ul><ul><li>function infocontato( $id ){ </li></ul></ul></ul><ul><ul><ul><ul><li>// algum codigo </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>?> </li></ul>
  • 12. Visão (View) <ul><li>Interface com usuário e/ou outro sistema; </li></ul><ul><li>Fornece uma maneira de visualizar os dados; </li></ul><ul><li>Saída diversa: HTML, PDF, … </li></ul>
  • 13. Visão (View) <ul><li>Exemplo:(/app/view/contato/infocontato.ctp) </li></ul><ul><li><h2>Informações do contato:</h2> </li></ul><ul><li><p>Nome Contato: <? echo </li></ul><ul><li>$dados[&quot;Contato&quot;][&quot;nome&quot;] ?></p> </li></ul><ul><li><p>E-mail Contato: <? echo </li></ul><ul><li>$dados[&quot;Contato&quot;][“email&quot;] ?></p> </li></ul>
  • 14. Uma requisição ao CakePHP
  • 15. Uma requisição ao CakePHP <ul><li>Por exemplo: </li></ul><ul><li>http://localhost/ contatos / infocontato / 1 </li></ul><ul><li>– Controller: contatos </li></ul><ul><li>– Método/Action: infocontato </li></ul><ul><li>– Paramêtro: 1 </li></ul>
  • 16. Estrutura de Diretórios <ul><li>/raiz/ </li></ul><ul><ul><li>app </li></ul></ul><ul><ul><ul><li>config </li></ul></ul></ul><ul><ul><ul><li>controllers </li></ul></ul></ul><ul><ul><ul><li>locale </li></ul></ul></ul><ul><ul><ul><li>models </li></ul></ul></ul><ul><ul><ul><li>plugins </li></ul></ul></ul><ul><ul><ul><li>tmp </li></ul></ul></ul><ul><ul><ul><li>vendors </li></ul></ul></ul><ul><ul><ul><li>views </li></ul></ul></ul><ul><ul><ul><li>webroot </li></ul></ul></ul><ul><ul><ul><ul><li>css </li></ul></ul></ul></ul><ul><ul><ul><ul><li>img </li></ul></ul></ul></ul><ul><ul><ul><ul><li>js </li></ul></ul></ul></ul><ul><ul><li>cake </li></ul></ul><ul><ul><li>docs </li></ul></ul><ul><ul><li>vendors </li></ul></ul>
  • 17. Helpers <ul><li>Hepers são objetos que fornecem funcionalidades genéricas para a view, como criar formulários, paginação de resultados , e diversas outras tags </li></ul><ul><li>Os helpers são declarados no controle e só podem ser utilizados na Visão(View) </li></ul>
  • 18. Helpers - Exemplos <ul><li>Método </li></ul><ul><li><?php echo </li></ul><ul><li>$html->image(‘/img/logo.png’,array(‘alt’=>’Logo’)); </li></ul><ul><li>?> </li></ul><ul><li>Código gerado </li></ul><ul><li><img src=&quot; /cake/img/logo.png &quot; alt=&quot;Logo&quot; /> </li></ul>
  • 19. Helpers - Exemplos <ul><li>Método </li></ul><ul><li><?php </li></ul><ul><li>echo $html->link('Titulo Página', &quot;http://ww.google.com.br&quot;, null, 'Deixar a página?'); </li></ul><ul><li>?> </li></ul><ul><li>Código gerado </li></ul><ul><li><a href=&quot; http://ww.google.com.br &quot; onclick=&quot;return confirm('Deixar a página?');&quot;>Titulo Página</a> </li></ul>
  • 20. Components <ul><li>Lógica genérica para se utilizada nos controllers </li></ul><ul><li>Upload de arquivos, Envio de e-mail, controle de acesso.... </li></ul>
  • 21. Component - Session <ul><li>O CakePHP fornece um Component para trabalhar com Sessões </li></ul><ul><li>$this->Session->write(nome,valor); </li></ul><ul><li>$this->Session->read(nome); </li></ul><ul><li>$this->Session->setFlash(texto); </li></ul>
  • 22. Buscando informações <ul><li>$this->Model->read(campos , id); </li></ul><ul><li>Array ( </li></ul><ul><ul><ul><li>[Contato] => Array ( </li></ul></ul></ul><ul><ul><ul><ul><ul><li>[nome] => Rodrigo </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[email] => rodrigo@g8si.com </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[telefone] => 987654321 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[endereco] => 15 de Novembro </li></ul></ul></ul></ul></ul><ul><ul><ul><li>) </li></ul></ul></ul><ul><li>) </li></ul>
  • 23. Buscando informações <ul><li>$this->Model->findAll(); </li></ul><ul><li>Array ( </li></ul><ul><ul><li>[0] => Array ( </li></ul></ul><ul><ul><li> [Contato] => Array ( </li></ul></ul><ul><ul><ul><li> [id] => 1 </li></ul></ul></ul><ul><ul><ul><li> [nome] => Rodrigo </li></ul></ul></ul><ul><ul><ul><li> [email] => rodrigoaramburu@gmail.com </li></ul></ul></ul><ul><ul><li>) ) </li></ul></ul><ul><ul><li>[1] => Array ( </li></ul></ul><ul><ul><ul><li>[Contato] => Array ( </li></ul></ul></ul><ul><ul><ul><ul><li>[id] => 2 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>[nome] => Fulano </li></ul></ul></ul></ul><ul><ul><ul><ul><li>[email] => fulano@gmail.com </li></ul></ul></ul></ul><ul><ul><li>)) </li></ul></ul><ul><li>) </li></ul>
  • 24. Layout (/app/view/layouts/default.ctp) <ul><li><html> </li></ul><ul><li><head> </li></ul><ul><ul><li><title>CakePHP - <?php echo $title_for_layout; ?></title> </li></ul></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><h1>Titulo da Página</h1> </li></ul><ul><li><?php echo $content_for_layout; ?> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  • 25. Passando valores para o view <ul><li>As variáveis criadas no controller não serão acessíveis na view </li></ul><ul><li>Para passar valores para view utiliza-se o método: </li></ul><ul><li>$this->set( ‘nomeNaView’ , $valor ); </li></ul><ul><li>Na view será disponível uma variável $nomeNaView que terá o valor contido em $valor </li></ul>
  • 26. Formulários <ul><li>Para a criação de formulários o CakePHP fornece um Helper “Form” </li></ul><ul><li><?php </li></ul><ul><li>echo $form->Create(‘Contato’); </li></ul><ul><ul><li>$form->input(‘Contato.nome’, array(‘label’=>’Nome:’)); </li></ul></ul><ul><li>echo $form->end(‘Salvar’); </li></ul><ul><li>?> </li></ul>
  • 27. Formulário Criado <form id=&quot;ContatoAdicionarForm&quot; method=&quot;post&quot; action=&quot;/cake/contatos/add&quot;> <fieldset style=&quot;display:none;&quot;><input type=&quot;hidden&quot; name=&quot;_method&quot; value=&quot;POST&quot; /></fieldset> <div class=&quot;input text required&quot;> <label for=&quot;ContatoNome&quot;>Nome:</label> <input name=&quot;data[Contato][nome]&quot; type=&quot;text&quot; size=&quot;60&quot; maxlength=&quot;100&quot; value=&quot;&quot; id=&quot;ContatoNome&quot; /> </div> <div class=&quot;submit&quot;> <input type=&quot;submit&quot; value=&quot;Salvar&quot; /> </div> </form>
  • 28. Recebendo valores do Formulário <ul><li>Os valores enviados pelo formulário serão acessíveis através de $this->data </li></ul><ul><li>array ( </li></ul><ul><ul><ul><li>[Contato] => Array ( </li></ul></ul></ul><ul><ul><ul><ul><ul><li>[nome] => Rodrigo </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[email] => rodrigo@g8si.com </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[telefone] => 987654321 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>[endereco] => 15 de Novembro </li></ul></ul></ul></ul></ul><ul><ul><ul><li>) </li></ul></ul></ul><ul><li>) </li></ul>
  • 29. Perguntas? [email_address]

×