SlideShare a Scribd company logo
1 of 70
Programação para WEB ,[object Object],[object Object],O Framework CakePHP
Framework ,[object Object],[object Object],[object Object]
Publicações sobre CakePHP ,[object Object],[object Object],[object Object],[object Object]
Publicações sobre CakePHP ,[object Object],[object Object]
Histórico ,[object Object],[object Object]
Características ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Características ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Comparativo com outros frameworks ,[object Object],[object Object],[object Object],[object Object]
Arquitetura MVC
Arquitetura MVC ,[object Object],[object Object],[object Object]
MVC – Vantagens  ,[object Object]
Testando o PHP via console ,[object Object]
Instalando o CakePHP ,[object Object],[object Object],[object Object]
Geração de código com Bake ,[object Object],[object Object],[object Object],[object Object]
Bake Welcome to CakePHP v1.2.0.6311 beta Console -------------------------------------------------------------- App : app Path: C:ampplitetdocsocadorapp -------------------------------------------------------------- Interactive Bake Shell -------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [Q]uit What would you like to Bake? (D/M/V/C/P/Q)
Estrutura de Diretórios ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Estrutura de Diretórios ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Configurando o CakePHP ,[object Object],[object Object],[object Object],[object Object],[object Object]
Configurações da base de dados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Base de Dados usando MySQL <?php class   DATABASE_CONFIG   { var   $default   =   array ( 'driver'   =>   'mysql' , 'persistent'   =>   true , 'host'   =>   'localhost' , 'port'   =>   '' , 'login'   =>   'root' , 'password'   =>   '' , 'database'   =>   'prog_web' , 'schema'   =>   '' , 'prefix'   =>   '' , 'encoding'   =>   'utf8' ); // ... } ?> app/config/database.php
Base de Dados usando MySQLi <?php class   DATABASE_CONFIG   { var   $default   =   array ( 'driver'   =>   'mysqli' , 'persistent'   =>   true , 'host'   =>   'localhost' , 'port'   =>   '0' , 'login'   =>   'root' , 'password'   =>   '' , 'database'   =>   'prog_web' , 'schema'   =>   '' , 'prefix'   =>   '' , 'encoding'   =>   'utf8' ); // ... } ?> app/config/database.php
Olá, Mundo!!! <?php   class   HelloController   extends   AppController   { var   $uses   =   array ();   var   $autoRender   =   false ; function   index()   { echo   'Olá, Mundo!!!' ; } } ?> app/controllers/hello_controller.php
Olá, Mundo!!! <?php   class   HelloController   extends   AppController   { var   $uses   =   array ();   function   index()   { } } ?> < p > Olá, Mundo!!! </ p > app/views/hello/index.ctp app/controllers/hello_controller.php
Envio de dados do controlador para a visão <?php  class   HelloController   extends   AppController   { var   $uses   =   array ();   function   index()   { $this ->set( 'nome' , 'Regis' ); } } ?> < p > Olá,  <?php   echo   $nome ;   ?> . </ p > app/views/hello/index.ctp app/controllers/hello_controller.php
Método set ,[object Object],[object Object],$this ->set( 'cor' , 'azul' ); $this ->set( 'colecoes' , $this ->Colecao->findAll());
Layouts ,[object Object],[object Object],[object Object],[object Object],< html > < head > < title > Aplicação Exemplo </ title > </ head > < body > < h1 > Minha Aplicação </ h1 > <?php   echo   $content_for_layout ;   ?> </ body > </ html >
Fluxo de funcionamento do CakePHP
Configuração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Paginação ,[object Object],[object Object],[object Object],[object Object],[object Object]
Paginação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Paginação < table > < tr >   < th > <?php   echo   $paginator ->sort( 'ID' ,   'id' );   ?> </ th >   < th > <?php   echo   $paginator ->sort( 'Title' ,   'title' );   ?> </ th >   </ tr >   <?php   foreach ( $data   as   $recipe ):   ?>   < tr >   < td > <?php   echo   $recipe [ 'Recipe' ][ 'id' ];   ?>   </ td >   < td > <?php   echo   $recipe [ 'Recipe' ][ 'title' ];   ?> </ td >   </ tr >   <?php   endforeach ;   ?>   </ table > ,[object Object]
Paginação <!-- Shows the next and previous links --> <?php echo   $paginator ->prev( '« Previous ' ,   null,   null,   array ( 'class'   =>   'disabled' )); echo   $paginator ->next( ' Next »' ,   null,   null,     array ( 'class'   =>   'disabled' )); ?>   <!-- prints X of Y, where X is current page and Y is number of pages --> <?php   echo   $paginator ->counter();   ?> ,[object Object]
Paginação ,[object Object],<?php echo   $paginator ->counter( array ( 'format'   =>   ' Página %page% de %pages%,   mostrando %current% registros de um total   de %count%. Registro inicial: %start%.   Registro final: %end% ' ));   ?>
Validação <?php class   User   extends   AppModel   { var   $name   =   'User' ; var   $validate   =   array ( 'login'   =>   'alphaNumeric' , 'email'   =>   'email' , 'born'   =>   'date' ); } ?>
Validação <?php class   Genero   extends   AppModel   { var   $name   =   'Genero' ; var   $useTable   =   'generos' ; var   $displayField   =   'descricao' ; var   $validate   =   array ( 'descricao'   =>   VALID_NOT_EMPTY); //... } ?>
Validação <?php class  Filme  extends  AppModel   { var  $name   =   'Filme' ; var  $useTable   =   'filmes' ; var  $validate   =  array ( 'titulo'   =>  array (   array ( 'rule'   =>  array ( 'minLength' , 1 ),   'message' => 'Não pode ficar em branco' ),   array ( 'rule'   =>  array ( 'maxLength' , 50 ),   'message' => 'Texto muito longo.' )), 'sinopse'   =>  array ( 'rule'   =>  array ( 'minLength' , 1 )), 'ano_lancamento'   =>  array ( 'numeric' ) ); //... } ?>
Validação <?php class   User   extends   AppModel   { var   $name   =   'User' ; var   $validate   =   array ( 'login'   =>   array ( 'alphanumeric'   =>   array ( 'rule'   =>   'alphaNumeric' , 'required'   =>   true , 'message'   =>   'Alphabets and numbers only' ), 'between'   =>   array ( 'rule'   =>   array ( 'between' ,   5 ,   15 ) ) ), 'password'   =>   array ( 'rule'   =>   array ( 'minLength' ,   '8' ), 'message'   =>   'Mimimum 8 characters long' ), 'born'   =>   array ( 'rule'   =>   'date' , 'message'   =>   'Enter a valid date' , 'allowEmpty'   =>   true ) ); } ?>
Validação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Associações ,[object Object],[object Object],[object Object],[object Object]
Associações <?php class   User   extends   AppModel   { var   $name   =   'User' ; var   $hasOne   =   'Profile' ; var   $hasMany   =   array ( 'Recipe'   =>   array ( 'className'   =>   'Recipe' , 'conditions'   =>   'Recipe.approved = 1' , 'order'   =>   'Recipe.created DESC' )); } ?>
Associações <?php class   Filme   extends   AppModel   { var   $name   =   'Filme' ; var   $useTable   =   'filmes' ; // ... var   $belongsTo   =   array ( 'Genero'   =>   array ( 'className'   =>   'Genero' , 'foreignKey'   =>   'genero_id' , 'conditions'   =>   '' , 'fields'   =>   '' , 'order'   =>   '' ) ); } ?>
Associações $generos   =   $this ->Filme->Genero->find( 'list' , array ( 'order'   =>   'Genero.descricao' )); $this ->set(compact( 'generos' )); $generos  =  $this ->Filme->Genero->find( 'list' , array ( 'conditions'  =>  array ( 'Genero.descricao'  =>  'like a%' ),  'order'  =>  'Genero.descricao' )); $this ->set(compact( 'generos' )); ,[object Object],[object Object],var   $displayField   =   'descricao' ;
Rotas ,[object Object],[object Object],[object Object],[object Object]
Definição de Rotas ,[object Object],[object Object],[object Object],<?php Router::connect( '/' ,   array ( 'controller'   => 'filmes' ,   'action'   =>   'index' )); Router::connect( '/pages/*' , array ( 'controller'   => 'pages' ,   'action'   =>   'display' )); ?>
Flash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Logging ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Model ,[object Object]
Model <?php class   Pessoa   extends   AppModel   { } ?> app/models/pessoa.php
Personalização de plurais ,[object Object],[object Object],[object Object],[object Object]
Controller <?php class   PessoasController   extends   AppController   { var   $scaffold ; } ?> app/controllers/pessoas_controller.php
View ,[object Object],[object Object]
Layouts ,[object Object]
Helpers de Visão ,[object Object],[object Object]
$html->link <?php   echo   $html ->link( 'Filmes' , array ( 'controller' => 'filmes', 'action' => 'index' ));   ?> <?php   echo   $html ->link( 'Gêneros' , array ( 'controller' => 'generos', 'action' => 'index' ));  ?>
Compartilhamento de Código ,[object Object],[object Object],[object Object],[object Object]
Controller - Callbacks ,[object Object],[object Object],[object Object],[object Object]
Controller - Callbacks ,[object Object],[object Object],[object Object],[object Object],[object Object]
Model – Callbacks  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Autenticação ,[object Object],[object Object],[object Object],[object Object]
Autenticação ,[object Object],<?php class   AppController   extends   Controller   { var   $components   =   array ( 'Auth' ); function   beforeFilter(){ $this ->Auth->userModel   =   'Usuario' ;   $this ->Auth->fields   =   array ( 'username'   =>     'email' ,   'password'   =>   'senha' );   $this ->Auth->loginAction   =   array ( 'controller'   =>   'usuarios' ,   'action'   =>   'login' ); $this ->Auth->loginRedirect   =   array ( 'controller'   =>   'filmes' ,   'action'   =>   'index' );   $this ->Auth->loginError   =     &quot;Usuário ou senha inválido(s)&quot; ;   $this ->Auth->authError   =     'Acesso não autorizado.' ; } } ?>
Autenticação ,[object Object],<?php class   UsuariosController   extends   AppController   { var   $name   =   'Usuarios' ; var   $helpers   =   array ( 'Html' ,   'Form' ); // ... function   login()   { }   function   logout(){ $this ->Session->setFlash( 'Desconectado.' ); $this ->redirect( $this ->Auth->logout()); }   } ?>
Autenticação ,[object Object],< div  class = &quot;login&quot; > < h2 > Digite usuário e senha para acessar o sistema < h2 > <?php   echo   $form ->create( 'Usuario' , array ( 'action'   =>   'login' )); ?> <?php   echo   $form ->input( 'email' );   ?> <?php   echo   $form ->input( 'senha' ,   array ( 'type' => 'password' ));   ?> <?php   echo   $form ->end( 'Login' ); ?> </ div >
Autenticação ,[object Object],[object Object],[object Object],[object Object],<?php if   ( $session ->check( 'Message.auth' ))   { $session ->flash( 'auth' ); } ?>
Permissões de Acesso ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
AROs $aro   =   new   Aro(); $aro ->create( $user_id ,   $parent_id ,   $alias ); $aro ->create( 0 , null,  'Presidents' ); $aro ->create( 0 , null,  'Artists' ); $aro ->create(  1 , null ,  'Bob Marley'  ); $aro ->create(  2 , null ,  'Jimi Hendrix' ); $aro ->create(  3 , null ,  'George Washington' ); $aro ->create(  4 , null ,  'Abraham Lincoln' ); $aro ->setParent( 'Presidents' ,   'George Washington' ); $aro ->setParent( 'Presidents' ,   'Abraham Lincoln' ); $aro ->setParent( 'Artists' ,   'Jimi Hendrix' ); $aro ->setParent( 'Artists' ,   'Bob Marley' ); ?>
ACOs $aco   =   new   Aco(); $aco ->create( $id ,   $parent ,   $alias ); $aco ->create( 1 ,   null,   'Electric Guitar' ); $aco ->create( 2 ,   null,   'United States Army' ); $aco ->create( 3 ,   null,   'Fans' );
ACL <?php class   SomethingsController   extends   AppController   { var   $components   =   array ( 'Acl' ); function   someAction()   { // ALLLOW $this ->Acl->allow( 'Jimi Hendrix' ,   'Electric Guitar' ); $this ->Acl->allow( 'Bob Marley' ,   'Electric Guitar' ); $this ->Acl->Allow( 'Presidents' ,   'United States Army' ); $this ->Acl->allow( 'George Washington' ,   'Electric Guitar' ,   'read' ); $this ->Acl->allow( 'Abraham Lincoln' ,   'Electric Guitar' ,   'read' ); // DENY $this ->Acl->deny( 'Abraham Lincoln' ,   'United States Army' ); } } ?>
ACL <?php class   AppController   extends   Controller{ var   $components   =   array ( 'Acl' ); function   checkAccess( $aco ){   $access   =   $this ->Acl->check( $this ->Session->    read( 'user_alias' ),   $aco ,   $action   =   &quot;*&quot; );   if   ( $access   ===   false ) { echo   &quot;access denied&quot; ; exit ;   }  else  { echo   &quot;access allowed&quot; ; exit ;   } } } ?> $this ->Acl->check( $aro ,   $aco ,   $action   =   '*' );
ACL cd app ..akeonsoleake schema run create DbAcl ,[object Object]
Referências ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanosCaike Souza
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Smarty Template Engine
Smarty Template EngineSmarty Template Engine
Smarty Template EngineDiego Tremper
 
Python e Django
Python e DjangoPython e Django
Python e Djangopugpe
 
Joomla! Otimizando performance
Joomla! Otimizando performanceJoomla! Otimizando performance
Joomla! Otimizando performanceMarcio Mota
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamJS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamiMasters
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroMichael Castillo Granados
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionaliMasters
 

What's hot (20)

PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
 
Slides
SlidesSlides
Slides
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Smarty Template Engine
Smarty Template EngineSmarty Template Engine
Smarty Template Engine
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Joomla! Otimizando performance
Joomla! Otimizando performanceJoomla! Otimizando performance
Joomla! Otimizando performance
 
Python 08
Python 08Python 08
Python 08
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Php
PhpPhp
Php
 
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiamJS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
JS Experience 2017 - Web APIs que você provavelmente não sabia que existiam
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
JS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript FuncionalJS Experience 2017 - Javascript Funcional
JS Experience 2017 - Javascript Funcional
 
Less
LessLess
Less
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Php 04 Mysql
Php 04 MysqlPhp 04 Mysql
Php 04 Mysql
 

Viewers also liked

REPRESENTACION BIDIMENSIONAL
REPRESENTACION BIDIMENSIONALREPRESENTACION BIDIMENSIONAL
REPRESENTACION BIDIMENSIONALyesuam
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPLorranna Machado
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)Sérgio Silva
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell ScriptLuís Eduardo
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell ScriptHugo Maia Vieira
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosFrederico Madeira
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 

Viewers also liked (20)

REPRESENTACION BIDIMENSIONAL
REPRESENTACION BIDIMENSIONALREPRESENTACION BIDIMENSIONAL
REPRESENTACION BIDIMENSIONAL
 
Java Script
Java ScriptJava Script
Java Script
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Primeira Aula PHP
Primeira Aula PHPPrimeira Aula PHP
Primeira Aula PHP
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Interfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIGInterfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIG
 
Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos Básicos
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 

Similar to Php 07 Cakephp

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGiljefesrodrigues
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryHarlley Oliveira
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPMarcelo Andrade
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para issoJunior Conte
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
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
 
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
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosRegis Magalhães
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage apiSuissa
 

Similar to Php 07 Cakephp (20)

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGil
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Angular js
Angular jsAngular js
Angular js
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHP
 
Você não deveria escrever uma API para isso
Você não deveria escrever uma API para issoVocê não deveria escrever uma API para isso
Você não deveria escrever uma API para isso
 
Cake Php
Cake PhpCake Php
Cake Php
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
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
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
 
CakePHP
CakePHPCakePHP
CakePHP
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
Html5 storage api
Html5 storage apiHtml5 storage api
Html5 storage api
 

More from Regis Magalhães

Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 

More from Regis Magalhães (20)

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 

Php 07 Cakephp

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Bake Welcome to CakePHP v1.2.0.6311 beta Console -------------------------------------------------------------- App : app Path: C:ampplitetdocsocadorapp -------------------------------------------------------------- Interactive Bake Shell -------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [Q]uit What would you like to Bake? (D/M/V/C/P/Q)
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. Base de Dados usando MySQL <?php class DATABASE_CONFIG { var $default = array ( 'driver' => 'mysql' , 'persistent' => true , 'host' => 'localhost' , 'port' => '' , 'login' => 'root' , 'password' => '' , 'database' => 'prog_web' , 'schema' => '' , 'prefix' => '' , 'encoding' => 'utf8' ); // ... } ?> app/config/database.php
  • 21. Base de Dados usando MySQLi <?php class DATABASE_CONFIG { var $default = array ( 'driver' => 'mysqli' , 'persistent' => true , 'host' => 'localhost' , 'port' => '0' , 'login' => 'root' , 'password' => '' , 'database' => 'prog_web' , 'schema' => '' , 'prefix' => '' , 'encoding' => 'utf8' ); // ... } ?> app/config/database.php
  • 22. Olá, Mundo!!! <?php class HelloController extends AppController { var $uses = array (); var $autoRender = false ; function index() { echo 'Olá, Mundo!!!' ; } } ?> app/controllers/hello_controller.php
  • 23. Olá, Mundo!!! <?php class HelloController extends AppController { var $uses = array (); function index() { } } ?> < p > Olá, Mundo!!! </ p > app/views/hello/index.ctp app/controllers/hello_controller.php
  • 24. Envio de dados do controlador para a visão <?php class HelloController extends AppController { var $uses = array (); function index() { $this ->set( 'nome' , 'Regis' ); } } ?> < p > Olá, <?php echo $nome ; ?> . </ p > app/views/hello/index.ctp app/controllers/hello_controller.php
  • 25.
  • 26.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34. Validação <?php class User extends AppModel { var $name = 'User' ; var $validate = array ( 'login' => 'alphaNumeric' , 'email' => 'email' , 'born' => 'date' ); } ?>
  • 35. Validação <?php class Genero extends AppModel { var $name = 'Genero' ; var $useTable = 'generos' ; var $displayField = 'descricao' ; var $validate = array ( 'descricao' => VALID_NOT_EMPTY); //... } ?>
  • 36. Validação <?php class Filme extends AppModel { var $name = 'Filme' ; var $useTable = 'filmes' ; var $validate = array ( 'titulo' => array ( array ( 'rule' => array ( 'minLength' , 1 ), 'message' => 'Não pode ficar em branco' ), array ( 'rule' => array ( 'maxLength' , 50 ), 'message' => 'Texto muito longo.' )), 'sinopse' => array ( 'rule' => array ( 'minLength' , 1 )), 'ano_lancamento' => array ( 'numeric' ) ); //... } ?>
  • 37. Validação <?php class User extends AppModel { var $name = 'User' ; var $validate = array ( 'login' => array ( 'alphanumeric' => array ( 'rule' => 'alphaNumeric' , 'required' => true , 'message' => 'Alphabets and numbers only' ), 'between' => array ( 'rule' => array ( 'between' , 5 , 15 ) ) ), 'password' => array ( 'rule' => array ( 'minLength' , '8' ), 'message' => 'Mimimum 8 characters long' ), 'born' => array ( 'rule' => 'date' , 'message' => 'Enter a valid date' , 'allowEmpty' => true ) ); } ?>
  • 38.
  • 39.
  • 40. Associações <?php class User extends AppModel { var $name = 'User' ; var $hasOne = 'Profile' ; var $hasMany = array ( 'Recipe' => array ( 'className' => 'Recipe' , 'conditions' => 'Recipe.approved = 1' , 'order' => 'Recipe.created DESC' )); } ?>
  • 41. Associações <?php class Filme extends AppModel { var $name = 'Filme' ; var $useTable = 'filmes' ; // ... var $belongsTo = array ( 'Genero' => array ( 'className' => 'Genero' , 'foreignKey' => 'genero_id' , 'conditions' => '' , 'fields' => '' , 'order' => '' ) ); } ?>
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48. Model <?php class Pessoa extends AppModel { } ?> app/models/pessoa.php
  • 49.
  • 50. Controller <?php class PessoasController extends AppController { var $scaffold ; } ?> app/controllers/pessoas_controller.php
  • 51.
  • 52.
  • 53.
  • 54. $html->link <?php echo $html ->link( 'Filmes' , array ( 'controller' => 'filmes', 'action' => 'index' )); ?> <?php echo $html ->link( 'Gêneros' , array ( 'controller' => 'generos', 'action' => 'index' )); ?>
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65. AROs $aro = new Aro(); $aro ->create( $user_id , $parent_id , $alias ); $aro ->create( 0 , null, 'Presidents' ); $aro ->create( 0 , null, 'Artists' ); $aro ->create( 1 , null , 'Bob Marley' ); $aro ->create( 2 , null , 'Jimi Hendrix' ); $aro ->create( 3 , null , 'George Washington' ); $aro ->create( 4 , null , 'Abraham Lincoln' ); $aro ->setParent( 'Presidents' , 'George Washington' ); $aro ->setParent( 'Presidents' , 'Abraham Lincoln' ); $aro ->setParent( 'Artists' , 'Jimi Hendrix' ); $aro ->setParent( 'Artists' , 'Bob Marley' ); ?>
  • 66. ACOs $aco = new Aco(); $aco ->create( $id , $parent , $alias ); $aco ->create( 1 , null, 'Electric Guitar' ); $aco ->create( 2 , null, 'United States Army' ); $aco ->create( 3 , null, 'Fans' );
  • 67. ACL <?php class SomethingsController extends AppController { var $components = array ( 'Acl' ); function someAction() { // ALLLOW $this ->Acl->allow( 'Jimi Hendrix' , 'Electric Guitar' ); $this ->Acl->allow( 'Bob Marley' , 'Electric Guitar' ); $this ->Acl->Allow( 'Presidents' , 'United States Army' ); $this ->Acl->allow( 'George Washington' , 'Electric Guitar' , 'read' ); $this ->Acl->allow( 'Abraham Lincoln' , 'Electric Guitar' , 'read' ); // DENY $this ->Acl->deny( 'Abraham Lincoln' , 'United States Army' ); } } ?>
  • 68. ACL <?php class AppController extends Controller{ var $components = array ( 'Acl' ); function checkAccess( $aco ){ $access = $this ->Acl->check( $this ->Session-> read( 'user_alias' ), $aco , $action = &quot;*&quot; ); if ( $access === false ) { echo &quot;access denied&quot; ; exit ; } else { echo &quot;access allowed&quot; ; exit ; } } } ?> $this ->Acl->check( $aro , $aco , $action = '*' );
  • 69.
  • 70.