SlideShare uma empresa Scribd logo
CakePHP
Desenvolvimento ágil e seguro




       Ivan Rosolen
Autor
✦   Bacharel em Sistemas de Informação pela FMP
✦   MBA em Gerência de Projetos – PMI pela FIAP
✦   Desenvolvedor PHP a mais de 5 anos
✦   Fundador do PHPSP
✦   Dublês, acrobata, palhaço ....
Agenda
Agenda
✦   O que é?
Agenda
✦   O que é?
✦   Quem está usando?
Agenda
✦   O que é?
✦   Quem está usando?
✦   Porque estão usando?
Agenda
✦   O que é?
✦   Quem está usando?
✦   Porque estão usando?
✦   Intalação/Configuração
Agenda
✦   O que é?
✦   Quem está usando?
✦   Porque estão usando?
✦   Intalação/Configuração
✦   Convenções CakePHP
Agenda
✦   O que é?
✦   Quem está usando?
✦   Porque estão usando?
✦   Intalação/Configuração
✦   Convenções CakePHP
✦   Bake
Agenda
✦   O que é?
✦   Quem está usando?
✦   Porque estão usando?
✦   Intalação/Configuração
✦   Convenções CakePHP
✦   Bake
✦   ????
O Que É?
O Que É?
É um framework de desenvolvimento rápido para PHP que
fornece uma arquitetura extensível, manutenção e
implantação de aplicativos. Utiliza padrões de projeto
conhecidos como MVC e ORM.

Com foco em Convenção ao invéz de configuração, ele
reduz os custos de desenvolvimento e ajuda os
desenvolvedores a escreverem menos código.
Quem Está Usando?
Porque Estão Usando?
Porque Estão Usando?
✦   MVC
Porque Estão Usando?
✦   MVC
✦   ORM (ActiveRecord)
Porque Estão Usando?
✦   MVC
✦   ORM (ActiveRecord)
✦   CRUD e Scaffolding
Porque Estão Usando?
✦   MVC
✦   ORM (ActiveRecord)
✦   CRUD e Scaffolding
✦   Rotas para tratar requisições
Porque Estão Usando?
✦   MVC
✦   ORM (ActiveRecord)
✦   CRUD e Scaffolding
✦   Rotas para tratar requisições
✦   Validação
Porque Estão Usando?
✦   MVC
✦   ORM (ActiveRecord)
✦   CRUD e Scaffolding
✦   Rotas para tratar requisições
✦   Validação
✦   Internacionalização (locale)
Porque Estão Usando?
✦   MVC
✦   ORM (ActiveRecord)
✦   CRUD e Scaffolding
✦   Rotas para tratar requisições
✦   Validação
✦   Internacionalização (locale)
✦   URL Amigáveis (mod_rewrite)
Porque Estão Usando?
✦   MVC                             ✦   Desenvolvimento em paralelo
✦   ORM (ActiveRecord)
✦   CRUD e Scaffolding
✦   Rotas para tratar requisições
✦   Validação
✦   Internacionalização (locale)
✦   URL Amigáveis (mod_rewrite)
Porque Estão Usando?
✦   MVC                             ✦   Desenvolvimento em paralelo
✦   ORM (ActiveRecord)              ✦   PADRÕES - Melhor manutenção de Código
✦   CRUD e Scaffolding
✦   Rotas para tratar requisições
✦   Validação
✦   Internacionalização (locale)
✦   URL Amigáveis (mod_rewrite)
Porque Estão Usando?
✦   MVC                             ✦   Desenvolvimento em paralelo
✦   ORM (ActiveRecord)              ✦   PADRÕES - Melhor manutenção de Código
✦   CRUD e Scaffolding              ✦   Comunidade ativa
✦   Rotas para tratar requisições
✦   Validação
✦   Internacionalização (locale)
✦   URL Amigáveis (mod_rewrite)
Porque Estão Usando?
✦   MVC                             ✦   Desenvolvimento em paralelo
✦   ORM (ActiveRecord)              ✦   PADRÕES - Melhor manutenção de Código
✦   CRUD e Scaffolding              ✦   Comunidade ativa
✦   Rotas para tratar requisições   ✦   PHP 4 e 5
✦   Validação
✦   Internacionalização (locale)
✦   URL Amigáveis (mod_rewrite)
Porque Estão Usando?
✦   MVC                             ✦   Desenvolvimento em paralelo
✦   ORM (ActiveRecord)              ✦   PADRÕES - Melhor manutenção de Código
✦   CRUD e Scaffolding              ✦   Comunidade ativa
✦   Rotas para tratar requisições   ✦   PHP 4 e 5
✦   Validação                       ✦   User Friendly
✦   Internacionalização (locale)
✦   URL Amigáveis (mod_rewrite)
MVC
MVC
MVC




  http://betterexplained.com
Convenções
Exemplo User
Tabela

Nome tabela sempre no Plural
Tabela

Nome tabela sempre no Plural


      Exemplo: Users
Model
Model

Nome do modelo sempre no Singular
Model

Nome do modelo sempre no Singular

       Exemplo:
       Arquivo:
Model

Nome do modelo sempre no Singular

       Exemplo: class User
       Arquivo: user.php
Model
Model
Controller
Controller

Nome do modelo sempre no Plural
Controller

Nome do modelo sempre no Plural

 Exemplo:
 Arquivo:
Controller

Nome do modelo sempre no Plural

 Exemplo: class UsersController
 Arquivo: users_controller.php
Controller
Controller
Views
Views

 Arquivo:
Chamada:
 Legenda:
Views

 Arquivo:   views/users/edit.ctp
Chamada:    users/edit/3
 Legenda:   controller/function/parâmetros
Views
Views
Helpers, plugins, elements....
The CheatSheet - CakePHP 1.2
Config                                                                  Model                                               Controller                            View                                    Models
                                                                                                                                                                                                                          Conventions
                     Core    Properties                                                                                                                                                      Properties
                                                                                                                                                                   $action              $models
debug
App.encoding
                             $cacheQueries          $recursive
                                                                                        Relationships                 Properties                                   $autoLayout          $name
                                                                                                                                                                                                          Class:   singular, camel cased
                             $data                  $useDbConfig                                                                                                                                                   (LineItem, Person)
App.baseUrl                                                                             $belongsTo                    $name                $layout                 $autoRender          $pageTitle
                             $displayField          $useTable                                                                                                      $base                $params
App.dir                                                                                 $hasAndBelongsToMany          $action              $output
                             $id                    $validate                                                                                                      $ext                 $plugin           File:    singular, underscored
Cache.check                                                                                                           $autoLayout          $pageTitle
                             $name                  $validationErrors                   $hasMany                                                                   $hasRendered         $subDir                    (line_item.php, person.php)
Cache.disable                                                                                                         $autoRender          $params
Acl.classname                $primaryKey            $_schema                            $hasOne                                                                    $helpers             $themeWeb
                                                                                                                      $base                $persistModel
Acl.database                                                                                                          $cacheAction         $plugin                 $here                $uses             Table:   plural, underscored
Routing.admin                                                                                                         $components          $uses                   $layout              $viewPath                  (line_items, people)
Session.start                Methods                                                                                  $data                $view                   $loaded
Session.save                                                                                                          $helpers             $viewPath
                             bind(params)                                       invalidFields([data])
Session.checkAgent                                                                                                    $here                $webroot
Session.cookie               create([data])                                     isForeignKey(field)                                                                                            Methods
Session.timeout              delete([id, cascade])                              isUnique(fields, [or])                                                                                                    Controllers
                                                                                                                                                                  addScript (name, [content])
Security.level               deleteAll(conditions, [cascade, callbacks])        query([sql])
                                                                                                                                                                  element (name, [params, loadHelpers])
Security.salt                escapeField(field)                                 read([fields, id])                    Methods                                     error (code, name, message)             Class:   plural, camel cased,
Asset.filter.js              exists()                                           save([data, options])                                                                                                              ends in "Controller"
                                                                                                                                                                  getVar (var)
Asset.filter.css                                                                                                      constructClasses()
                             field(name, conditions, order)                     saveAll([data, options])                                                          getVars ( )                                      (LineItemsController,
                                                                                                                      header(status)
                             find(type, [options])                              saveField([name, value, validate])                                                renderCache ( lename, timeStart)                 PeopleController)
                                                                                                                      paginate ([object, scope, whitelist])
                             getAffectedRows()                                  schema([field])                                                                   render ([action, layout, le])
              Index.php                                                                                               disableCache()                              renderLayout(content, [layout])
                             getAssociated([type])                              set(one, [two])                       postConditions(data)                                                                File:    plural, underscored
CAKE_CORE_INCLUDE_PATH                                                                                                                                            set (one, [tset (one, [two])                     (line_items_controller.php,
                             getColumnType(column)                              setDataSource(dataSource)             redirect(url, [status])
ROOT                                                                                                                                                                                                               people_controller.php)
                             getInsertID()                                      setSource(tableName)                  referer([default, local])
WWW_ROOT
WEBROOT_DIR                  getNumRows()                                       unbindModel(params, [reset])          render([action, layout, le])
                             hasAny([conditions])                               updateAll(fields, [conditions])       set(one, [two])


                     Paths
                             hasField(name)
                             invalidate(field)
                                                                                updateCounterCache([keys, created])
                                                                                validates([options])
                                                                                                                      setAction (action, [param, param, param])
                                                                                                                      validate()                                  Helper                     Properties    Views
                                                                                                                      validateErrors()
APP                                                                                                                                                                $base                $webroot          Path:    controller name, underscored
APP_DIR
                                      Custom Find Types: all, first, count, list, threaded, neighbors                                                              $here                $params
                                                                                                                                                                                                                   (app/views/line_items/<file>,
APP_PATH                                                                                                                                                           $action              $data
                                                                                                                                                                                                                   app/views/people/<file>)
CACHE                        Callbacks                                                                                Callbacks                                    $themeWeb            $plugin
CAKE                                                                                                                                                               $view
COMPONENTS                   beforeDelete()               afterFind(results, primary)   afterSave()                                                                                                       File:    action name, underscored
                                                                                                                      beforeFilter()
CONFIGS                      afterDelete()                beforeValidate()                                            beforeRender()                                                                               (index.ctp, view.ctp,
CONTROLLER_TESTS             beforeFind(query)            beforeSave()                                                afterFilter()                                                            Methods             admin_index.ctp)
CONTROLLERS
CSS                                                                                                                                                               url([url, full])
ELEMENTS                                                                                                                                                          webroot(file)
HELPER_TESTS                                                                                                                                                      clean(text)
                                                                                                                                                                  value([field/options, field, key])
HELPERS
INFLECTIONS                                         Global Functions                                                  Component
JS                                                                                                                                              Properties
LAYOUTS
                                                                                                                        $enabled                                                              Callbacks
LIB_TESTS                     config('fileName')                             __n(singular, plural, count, [return])
LIBS                          debug(message, [escape])                       __d(domain, msg, [return])                                                           afterRender()
LOGS                          pr(string | array | object)                    __dn(domain, singular, plural, count,                                                beforeLayout()
MODEL_TESTS                   e(message)                                          [return])
                                                                                                                                                    Callbacks     afterLayout()
MODELS
                              h(string | array)                              __dc(domain, msg, category,[return])     initialize(&controller)
TESTS
                              am(array, [array, array])                      __dcn(domain, singular, plural,          startup(&controller)
TMP
                              cache(path, data, expires, [target])           count,category, [return])                beforeRender(&controller)
VENDORS
VIEWS                         clearCache([params, type, ext])                __c(msg, category, [return])             beforeRedirect(&controller)
                                                                                                                      shutdown(&controller)
                              env('HTTP_HEADER')
                              __(singular, [return])
ORM
ORM

✦   ActiveRecord
ORM

✦   ActiveRecord
✦   Sem nenhuma configuração
Banco de Dados
Banco de Dados
✦   MySQL (4 or greater)
✦   PostgreSQL
✦   Firebird DB2
✦   Microsoft SQL Server
✦   Oracle
✦   SQLite
✦   ODBC
✦   ADOdb
Validação
Validação
1 - alphaNumeric   11 - equalTo     21 - numeric
2 - between        12 - extension   22 - phone
3 - blank          13 - file         23 - postal
4 - boolean        14 - inList      24 - range
5 - cc             15 - ip          25 - ssn
6 - comparison     16 - maxLength   26 - time
7 - custom         17 - minLength   27 - url
8 - date           18 - money       28 - userDefined
9 - decimal        19 - multiple
10 - email         20 - notEmpty
Internacionalização
Internacionalização
Arquivo: app/locale/pt/LC_MESSAGES/default.po
Internacionalização
  Arquivo: app/locale/pt/LC_MESSAGES/default.po
Controller:
Internacionalização
  Arquivo: app/locale/pt/LC_MESSAGES/default.po
Controller:
Internacionalização
  Arquivo: app/locale/pt/LC_MESSAGES/default.po
Controller:
     View: __(‘nome’)
Internacionalização
  Arquivo: app/locale/pt/LC_MESSAGES/default.po
Controller:
     View: __(‘nome’)
Generator: xgettext
Internacionalização
  Arquivo:    app/locale/pt/LC_MESSAGES/default.po
Controller:
     View:     __(‘nome’)
Generator:    xgettext
      .PO:    msgid "nome"
              msgstr "Nome"
Rotas
O que são rotas?
Aonde eu uso isso?
Rotas
Rotas
Arquivo: app/config/routes.php
Rotas
Arquivo: app/config/routes.php
Rotas
Arquivo: app/config/routes.php
CRUD e Scaffolding
Diferença?
Scaffolding
Scaffolding


Exemplo Users e Groups
Model
Model
Controller
View
View
View




????
Desenvolvimento
    Paralelo
Comunidade
Comunidade
✦   Bakery - http://bakery.cakephp.org
Comunidade
✦   Bakery - http://bakery.cakephp.org
✦   Q & A - http://cakeqs.org
Comunidade
✦   Bakery - http://bakery.cakephp.org
✦   Q & A - http://cakeqs.org
✦   FAKE - amf para interfaces flex
Comunidade
✦   Bakery - http://bakery.cakephp.org
✦   Q & A - http://cakeqs.org
✦   FAKE - amf para interfaces flex
✦   IRC - #CakePHP e #CakePHP-PT
Comunidade
✦   Bakery - http://bakery.cakephp.org
✦   Q & A - http://cakeqs.org
✦   FAKE - amf para interfaces flex
✦   IRC - #CakePHP e #CakePHP-PT
✦   Lista de discussão - http://groups.google.com/group/cakephp-pt?hl=pt-PT
Comunidade
✦   Bakery - http://bakery.cakephp.org
✦   Q & A - http://cakeqs.org
✦   FAKE - amf para interfaces flex
✦   IRC - #CakePHP e #CakePHP-PT
✦   Lista de discussão - http://groups.google.com/group/cakephp-pt?hl=pt-PT
✦   Eventos internacionais e nacionais
Instalação
Instalação

✦   Apache, PHP, BD da sua escolha instalados e configurados
Instalação

✦   Apache, PHP, BD da sua escolha instalados e configurados
✦   Baixar o cake em www.cakephp.org ou .com.br
Instalação

✦   Apache, PHP, BD da sua escolha instalados e configurados
✦   Baixar o cake em www.cakephp.org ou .com.br
✦   descompactar para a pasta htdocs|www
Diretórios
Diretórios
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
✦   models - models, behaviors e datasources
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
✦   models - models, behaviors e datasources
✦   plugins - plugins
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
✦   models - models, behaviors e datasources
✦   plugins - plugins
✦   vendors - aplicativos de terceiros
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
✦   models - models, behaviors e datasources
✦   plugins - plugins
✦   vendors - aplicativos de terceiros
✦   views - telas da aplicação (.ctp), elements, error pages, helpers
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
✦   models - models, behaviors e datasources
✦   plugins - plugins
✦   vendors - aplicativos de terceiros
✦   views - telas da aplicação (.ctp), elements, error pages, helpers
✦   webroot - raiz da aplicação, CSS, imagens e JavaScript
Diretórios
✦   config - configuração de BD, aplicação, bootstrapping, etc
✦   controllers - controllers e componentes
✦   locale - internacionalização
✦   models - models, behaviors e datasources
✦   plugins - plugins
✦   vendors - aplicativos de terceiros
✦   views - telas da aplicação (.ctp), elements, error pages, helpers
✦   webroot - raiz da aplicação, CSS, imagens e JavaScript
✦   cake - CORE do CakePHP
Configurações
Configurações

✦   Apache: mod_rewrite
Configurações

✦   Apache: mod_rewrite
✦   BD: Usuário e Database
Configurações

✦   Apache: mod_rewrite
✦   BD: Usuário e Database
✦   Permissão de escrita para o ‘apache’ no diretório app/tmp
Configurações

✦   Apache: mod_rewrite
✦   BD: Usuário e Database
✦   Permissão de escrita para o ‘apache’ no diretório app/tmp
✦   Alterar arquivo app/config/database.php
    (possível criar com BAKE)
database.php
database.php
BAKE
Contato

ivan@phpsp.org.br
@ivanrosolen
http://www.ivanrosolen.com

Mais conteúdo relacionado

Mais procurados

JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
Fabio Noth
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Framework
angellicacardozo
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
Jorge William Rodrigues
 
jsp-intro
jsp-introjsp-intro
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
Domingos Teruel
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
Eduardo Bregaida
 
Web Offline
Web OfflineWeb Offline
Web Offline
Bruno Catão
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
Eduardo Mendes
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
Carlos Henrique
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
Rafael Ponte
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
Alan Oliveira
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
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
Arlindo Santos
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
Igo Coelho
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
David O'Keefe
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Rodrigo Recio
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
netinhoteixeira
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
Bruno Catão
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
Marcio Marinho
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
Eduardo Bregaida
 

Mais procurados (20)

JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Framework
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 
jsp-intro
jsp-introjsp-intro
jsp-intro
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
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
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 

Destaque

Criando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework RespectCriando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework Respect
Ivan Rosolen
 
PHPT
PHPTPHPT
Php e Cassandra
Php e Cassandra Php e Cassandra
Php e Cassandra
Ivan Rosolen
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
Juan Basso
 
Recursividade
RecursividadeRecursividade
Recursividade
Pablo Silva
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
lucioandrade
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
MikeNandes
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
Adao Chiavelli
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
Pablo Silva
 
Funções em C
Funções em CFunções em C
Funções em C
Pablo Silva
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
Jaime Zapata
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
Claudson Oliveira
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
khjhjhjh
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
Pablo Silva
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
Almir Neto
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
Elaine Cecília Gatto
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
Felipe Ribeiro
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
Elaine Cecília Gatto
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
Pablo Silva
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
Daniel Carrara
 

Destaque (20)

Criando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework RespectCriando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework Respect
 
PHPT
PHPTPHPT
PHPT
 
Php e Cassandra
Php e Cassandra Php e Cassandra
Php e Cassandra
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
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
 
Funções em C
Funções em CFunções em C
Funções em C
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
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
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 

Semelhante a CakePHP e o desenvolvimento rápido

Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
ismaelstahelin
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
Thiago Cifani
 
Yet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroYet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentro
Carlos Brando
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
Sergio Henrique
 
Solid
SolidSolid
Zend Framework
Zend FrameworkZend Framework
Zend Framework
Diego Tremper
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
Nécio de Lima Veras
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
elliando dias
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
Caue Guerra
 
Palestra
PalestraPalestra
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
Marcelo Rodrigo
 
Grails
GrailsGrails
Php5 e a orientação a objetos
Php5 e a orientação a objetosPhp5 e a orientação a objetos
Php5 e a orientação a objetos
xbacon
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
Cezinha Anjos
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
Ari Stopassola Junior
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
Marco Antonio Filho
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
Cezinha Anjos
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
Augusto das Neves
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
Maurício Linhares
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
Milton Moura
 

Semelhante a CakePHP e o desenvolvimento rápido (20)

Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Yet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroYet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentro
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Solid
SolidSolid
Solid
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
Palestra
PalestraPalestra
Palestra
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Grails
GrailsGrails
Grails
 
Php5 e a orientação a objetos
Php5 e a orientação a objetosPhp5 e a orientação a objetos
Php5 e a orientação a objetos
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 

Mais de Ivan Rosolen

15 mandamentos de um bom programador
15 mandamentos de um bom programador15 mandamentos de um bom programador
15 mandamentos de um bom programador
Ivan Rosolen
 
Utilizando Filas com PHP
Utilizando Filas com PHPUtilizando Filas com PHP
Utilizando Filas com PHP
Ivan Rosolen
 
Filas com php
Filas com phpFilas com php
Filas com php
Ivan Rosolen
 
Boas Práticas com PHP
Boas Práticas com PHPBoas Práticas com PHP
Boas Práticas com PHP
Ivan Rosolen
 
Mercado de Tecnologia
Mercado de TecnologiaMercado de Tecnologia
Mercado de Tecnologia
Ivan Rosolen
 
Deploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no JelasticDeploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no Jelastic
Ivan Rosolen
 
Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)
Ivan Rosolen
 
JSON Web Tokens
JSON Web TokensJSON Web Tokens
JSON Web Tokens
Ivan Rosolen
 
Tecnologias e Inovação
Tecnologias e InovaçãoTecnologias e Inovação
Tecnologias e Inovação
Ivan Rosolen
 
Rest Beer v2
Rest Beer v2Rest Beer v2
Rest Beer v2
Ivan Rosolen
 
Jelastic
JelasticJelastic
Jelastic
Ivan Rosolen
 
Aws video creator
Aws video creatorAws video creator
Aws video creator
Ivan Rosolen
 
Cassandra 7 masters
Cassandra 7 mastersCassandra 7 masters
Cassandra 7 masters
Ivan Rosolen
 
Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucesso
Ivan Rosolen
 
Case: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flowCase: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flow
Ivan Rosolen
 

Mais de Ivan Rosolen (15)

15 mandamentos de um bom programador
15 mandamentos de um bom programador15 mandamentos de um bom programador
15 mandamentos de um bom programador
 
Utilizando Filas com PHP
Utilizando Filas com PHPUtilizando Filas com PHP
Utilizando Filas com PHP
 
Filas com php
Filas com phpFilas com php
Filas com php
 
Boas Práticas com PHP
Boas Práticas com PHPBoas Práticas com PHP
Boas Práticas com PHP
 
Mercado de Tecnologia
Mercado de TecnologiaMercado de Tecnologia
Mercado de Tecnologia
 
Deploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no JelasticDeploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no Jelastic
 
Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)
 
JSON Web Tokens
JSON Web TokensJSON Web Tokens
JSON Web Tokens
 
Tecnologias e Inovação
Tecnologias e InovaçãoTecnologias e Inovação
Tecnologias e Inovação
 
Rest Beer v2
Rest Beer v2Rest Beer v2
Rest Beer v2
 
Jelastic
JelasticJelastic
Jelastic
 
Aws video creator
Aws video creatorAws video creator
Aws video creator
 
Cassandra 7 masters
Cassandra 7 mastersCassandra 7 masters
Cassandra 7 masters
 
Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucesso
 
Case: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flowCase: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flow
 

CakePHP e o desenvolvimento rápido

  • 1. CakePHP Desenvolvimento ágil e seguro Ivan Rosolen
  • 2. Autor ✦ Bacharel em Sistemas de Informação pela FMP ✦ MBA em Gerência de Projetos – PMI pela FIAP ✦ Desenvolvedor PHP a mais de 5 anos ✦ Fundador do PHPSP ✦ Dublês, acrobata, palhaço ....
  • 4. Agenda ✦ O que é?
  • 5. Agenda ✦ O que é? ✦ Quem está usando?
  • 6. Agenda ✦ O que é? ✦ Quem está usando? ✦ Porque estão usando?
  • 7. Agenda ✦ O que é? ✦ Quem está usando? ✦ Porque estão usando? ✦ Intalação/Configuração
  • 8. Agenda ✦ O que é? ✦ Quem está usando? ✦ Porque estão usando? ✦ Intalação/Configuração ✦ Convenções CakePHP
  • 9. Agenda ✦ O que é? ✦ Quem está usando? ✦ Porque estão usando? ✦ Intalação/Configuração ✦ Convenções CakePHP ✦ Bake
  • 10. Agenda ✦ O que é? ✦ Quem está usando? ✦ Porque estão usando? ✦ Intalação/Configuração ✦ Convenções CakePHP ✦ Bake ✦ ????
  • 12. O Que É? É um framework de desenvolvimento rápido para PHP que fornece uma arquitetura extensível, manutenção e implantação de aplicativos. Utiliza padrões de projeto conhecidos como MVC e ORM. Com foco em Convenção ao invéz de configuração, ele reduz os custos de desenvolvimento e ajuda os desenvolvedores a escreverem menos código.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 21. Porque Estão Usando? ✦ MVC ✦ ORM (ActiveRecord)
  • 22. Porque Estão Usando? ✦ MVC ✦ ORM (ActiveRecord) ✦ CRUD e Scaffolding
  • 23. Porque Estão Usando? ✦ MVC ✦ ORM (ActiveRecord) ✦ CRUD e Scaffolding ✦ Rotas para tratar requisições
  • 24. Porque Estão Usando? ✦ MVC ✦ ORM (ActiveRecord) ✦ CRUD e Scaffolding ✦ Rotas para tratar requisições ✦ Validação
  • 25. Porque Estão Usando? ✦ MVC ✦ ORM (ActiveRecord) ✦ CRUD e Scaffolding ✦ Rotas para tratar requisições ✦ Validação ✦ Internacionalização (locale)
  • 26. Porque Estão Usando? ✦ MVC ✦ ORM (ActiveRecord) ✦ CRUD e Scaffolding ✦ Rotas para tratar requisições ✦ Validação ✦ Internacionalização (locale) ✦ URL Amigáveis (mod_rewrite)
  • 27. Porque Estão Usando? ✦ MVC ✦ Desenvolvimento em paralelo ✦ ORM (ActiveRecord) ✦ CRUD e Scaffolding ✦ Rotas para tratar requisições ✦ Validação ✦ Internacionalização (locale) ✦ URL Amigáveis (mod_rewrite)
  • 28. Porque Estão Usando? ✦ MVC ✦ Desenvolvimento em paralelo ✦ ORM (ActiveRecord) ✦ PADRÕES - Melhor manutenção de Código ✦ CRUD e Scaffolding ✦ Rotas para tratar requisições ✦ Validação ✦ Internacionalização (locale) ✦ URL Amigáveis (mod_rewrite)
  • 29. Porque Estão Usando? ✦ MVC ✦ Desenvolvimento em paralelo ✦ ORM (ActiveRecord) ✦ PADRÕES - Melhor manutenção de Código ✦ CRUD e Scaffolding ✦ Comunidade ativa ✦ Rotas para tratar requisições ✦ Validação ✦ Internacionalização (locale) ✦ URL Amigáveis (mod_rewrite)
  • 30. Porque Estão Usando? ✦ MVC ✦ Desenvolvimento em paralelo ✦ ORM (ActiveRecord) ✦ PADRÕES - Melhor manutenção de Código ✦ CRUD e Scaffolding ✦ Comunidade ativa ✦ Rotas para tratar requisições ✦ PHP 4 e 5 ✦ Validação ✦ Internacionalização (locale) ✦ URL Amigáveis (mod_rewrite)
  • 31. Porque Estão Usando? ✦ MVC ✦ Desenvolvimento em paralelo ✦ ORM (ActiveRecord) ✦ PADRÕES - Melhor manutenção de Código ✦ CRUD e Scaffolding ✦ Comunidade ativa ✦ Rotas para tratar requisições ✦ PHP 4 e 5 ✦ Validação ✦ User Friendly ✦ Internacionalização (locale) ✦ URL Amigáveis (mod_rewrite)
  • 32. MVC
  • 33. MVC
  • 38. Tabela Nome tabela sempre no Plural Exemplo: Users
  • 39. Model
  • 40. Model Nome do modelo sempre no Singular
  • 41. Model Nome do modelo sempre no Singular Exemplo: Arquivo:
  • 42. Model Nome do modelo sempre no Singular Exemplo: class User Arquivo: user.php
  • 43. Model
  • 44. Model
  • 46. Controller Nome do modelo sempre no Plural
  • 47. Controller Nome do modelo sempre no Plural Exemplo: Arquivo:
  • 48. Controller Nome do modelo sempre no Plural Exemplo: class UsersController Arquivo: users_controller.php
  • 51. Views
  • 53. Views Arquivo: views/users/edit.ctp Chamada: users/edit/3 Legenda: controller/function/parâmetros
  • 54. Views
  • 55. Views
  • 57. The CheatSheet - CakePHP 1.2 Config Model Controller View Models Conventions Core Properties Properties $action $models debug App.encoding $cacheQueries $recursive Relationships Properties $autoLayout $name Class: singular, camel cased $data $useDbConfig (LineItem, Person) App.baseUrl $belongsTo $name $layout $autoRender $pageTitle $displayField $useTable $base $params App.dir $hasAndBelongsToMany $action $output $id $validate $ext $plugin File: singular, underscored Cache.check $autoLayout $pageTitle $name $validationErrors $hasMany $hasRendered $subDir (line_item.php, person.php) Cache.disable $autoRender $params Acl.classname $primaryKey $_schema $hasOne $helpers $themeWeb $base $persistModel Acl.database $cacheAction $plugin $here $uses Table: plural, underscored Routing.admin $components $uses $layout $viewPath (line_items, people) Session.start Methods $data $view $loaded Session.save $helpers $viewPath bind(params) invalidFields([data]) Session.checkAgent $here $webroot Session.cookie create([data]) isForeignKey(field) Methods Session.timeout delete([id, cascade]) isUnique(fields, [or]) Controllers addScript (name, [content]) Security.level deleteAll(conditions, [cascade, callbacks]) query([sql]) element (name, [params, loadHelpers]) Security.salt escapeField(field) read([fields, id]) Methods error (code, name, message) Class: plural, camel cased, Asset.filter.js exists() save([data, options]) ends in "Controller" getVar (var) Asset.filter.css constructClasses() field(name, conditions, order) saveAll([data, options]) getVars ( ) (LineItemsController, header(status) find(type, [options]) saveField([name, value, validate]) renderCache ( lename, timeStart) PeopleController) paginate ([object, scope, whitelist]) getAffectedRows() schema([field]) render ([action, layout, le]) Index.php disableCache() renderLayout(content, [layout]) getAssociated([type]) set(one, [two]) postConditions(data) File: plural, underscored CAKE_CORE_INCLUDE_PATH set (one, [tset (one, [two]) (line_items_controller.php, getColumnType(column) setDataSource(dataSource) redirect(url, [status]) ROOT people_controller.php) getInsertID() setSource(tableName) referer([default, local]) WWW_ROOT WEBROOT_DIR getNumRows() unbindModel(params, [reset]) render([action, layout, le]) hasAny([conditions]) updateAll(fields, [conditions]) set(one, [two]) Paths hasField(name) invalidate(field) updateCounterCache([keys, created]) validates([options]) setAction (action, [param, param, param]) validate() Helper Properties Views validateErrors() APP $base $webroot Path: controller name, underscored APP_DIR Custom Find Types: all, first, count, list, threaded, neighbors $here $params (app/views/line_items/<file>, APP_PATH $action $data app/views/people/<file>) CACHE Callbacks Callbacks $themeWeb $plugin CAKE $view COMPONENTS beforeDelete() afterFind(results, primary) afterSave() File: action name, underscored beforeFilter() CONFIGS afterDelete() beforeValidate() beforeRender() (index.ctp, view.ctp, CONTROLLER_TESTS beforeFind(query) beforeSave() afterFilter() Methods admin_index.ctp) CONTROLLERS CSS url([url, full]) ELEMENTS webroot(file) HELPER_TESTS clean(text) value([field/options, field, key]) HELPERS INFLECTIONS Global Functions Component JS Properties LAYOUTS $enabled Callbacks LIB_TESTS config('fileName') __n(singular, plural, count, [return]) LIBS debug(message, [escape]) __d(domain, msg, [return]) afterRender() LOGS pr(string | array | object) __dn(domain, singular, plural, count, beforeLayout() MODEL_TESTS e(message) [return]) Callbacks afterLayout() MODELS h(string | array) __dc(domain, msg, category,[return]) initialize(&controller) TESTS am(array, [array, array]) __dcn(domain, singular, plural, startup(&controller) TMP cache(path, data, expires, [target]) count,category, [return]) beforeRender(&controller) VENDORS VIEWS clearCache([params, type, ext]) __c(msg, category, [return]) beforeRedirect(&controller) shutdown(&controller) env('HTTP_HEADER') __(singular, [return])
  • 58. ORM
  • 59. ORM ✦ ActiveRecord
  • 60. ORM ✦ ActiveRecord ✦ Sem nenhuma configuração
  • 62. Banco de Dados ✦ MySQL (4 or greater) ✦ PostgreSQL ✦ Firebird DB2 ✦ Microsoft SQL Server ✦ Oracle ✦ SQLite ✦ ODBC ✦ ADOdb
  • 64. Validação 1 - alphaNumeric 11 - equalTo 21 - numeric 2 - between 12 - extension 22 - phone 3 - blank 13 - file 23 - postal 4 - boolean 14 - inList 24 - range 5 - cc 15 - ip 25 - ssn 6 - comparison 16 - maxLength 26 - time 7 - custom 17 - minLength 27 - url 8 - date 18 - money 28 - userDefined 9 - decimal 19 - multiple 10 - email 20 - notEmpty
  • 67. Internacionalização Arquivo: app/locale/pt/LC_MESSAGES/default.po Controller:
  • 68. Internacionalização Arquivo: app/locale/pt/LC_MESSAGES/default.po Controller:
  • 69. Internacionalização Arquivo: app/locale/pt/LC_MESSAGES/default.po Controller: View: __(‘nome’)
  • 70. Internacionalização Arquivo: app/locale/pt/LC_MESSAGES/default.po Controller: View: __(‘nome’) Generator: xgettext
  • 71. Internacionalização Arquivo: app/locale/pt/LC_MESSAGES/default.po Controller: View: __(‘nome’) Generator: xgettext .PO: msgid "nome" msgstr "Nome"
  • 72. Rotas
  • 73. O que são rotas?
  • 74. Aonde eu uso isso?
  • 75. Rotas
  • 83. Model
  • 84. Model
  • 86. View
  • 87. View
  • 89.
  • 90.
  • 91.
  • 92. Desenvolvimento Paralelo
  • 94. Comunidade ✦ Bakery - http://bakery.cakephp.org
  • 95. Comunidade ✦ Bakery - http://bakery.cakephp.org ✦ Q & A - http://cakeqs.org
  • 96. Comunidade ✦ Bakery - http://bakery.cakephp.org ✦ Q & A - http://cakeqs.org ✦ FAKE - amf para interfaces flex
  • 97. Comunidade ✦ Bakery - http://bakery.cakephp.org ✦ Q & A - http://cakeqs.org ✦ FAKE - amf para interfaces flex ✦ IRC - #CakePHP e #CakePHP-PT
  • 98. Comunidade ✦ Bakery - http://bakery.cakephp.org ✦ Q & A - http://cakeqs.org ✦ FAKE - amf para interfaces flex ✦ IRC - #CakePHP e #CakePHP-PT ✦ Lista de discussão - http://groups.google.com/group/cakephp-pt?hl=pt-PT
  • 99. Comunidade ✦ Bakery - http://bakery.cakephp.org ✦ Q & A - http://cakeqs.org ✦ FAKE - amf para interfaces flex ✦ IRC - #CakePHP e #CakePHP-PT ✦ Lista de discussão - http://groups.google.com/group/cakephp-pt?hl=pt-PT ✦ Eventos internacionais e nacionais
  • 101. Instalação ✦ Apache, PHP, BD da sua escolha instalados e configurados
  • 102. Instalação ✦ Apache, PHP, BD da sua escolha instalados e configurados ✦ Baixar o cake em www.cakephp.org ou .com.br
  • 103. Instalação ✦ Apache, PHP, BD da sua escolha instalados e configurados ✦ Baixar o cake em www.cakephp.org ou .com.br ✦ descompactar para a pasta htdocs|www
  • 106. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc
  • 107. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes
  • 108. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização
  • 109. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização ✦ models - models, behaviors e datasources
  • 110. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização ✦ models - models, behaviors e datasources ✦ plugins - plugins
  • 111. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização ✦ models - models, behaviors e datasources ✦ plugins - plugins ✦ vendors - aplicativos de terceiros
  • 112. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização ✦ models - models, behaviors e datasources ✦ plugins - plugins ✦ vendors - aplicativos de terceiros ✦ views - telas da aplicação (.ctp), elements, error pages, helpers
  • 113. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização ✦ models - models, behaviors e datasources ✦ plugins - plugins ✦ vendors - aplicativos de terceiros ✦ views - telas da aplicação (.ctp), elements, error pages, helpers ✦ webroot - raiz da aplicação, CSS, imagens e JavaScript
  • 114. Diretórios ✦ config - configuração de BD, aplicação, bootstrapping, etc ✦ controllers - controllers e componentes ✦ locale - internacionalização ✦ models - models, behaviors e datasources ✦ plugins - plugins ✦ vendors - aplicativos de terceiros ✦ views - telas da aplicação (.ctp), elements, error pages, helpers ✦ webroot - raiz da aplicação, CSS, imagens e JavaScript ✦ cake - CORE do CakePHP
  • 116. Configurações ✦ Apache: mod_rewrite
  • 117. Configurações ✦ Apache: mod_rewrite ✦ BD: Usuário e Database
  • 118. Configurações ✦ Apache: mod_rewrite ✦ BD: Usuário e Database ✦ Permissão de escrita para o ‘apache’ no diretório app/tmp
  • 119. Configurações ✦ Apache: mod_rewrite ✦ BD: Usuário e Database ✦ Permissão de escrita para o ‘apache’ no diretório app/tmp ✦ Alterar arquivo app/config/database.php (possível criar com BAKE)
  • 122.
  • 123. BAKE
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.