• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
CakePHP e o desenvolvimento rápido
 

CakePHP e o desenvolvimento rápido

on

  • 7,240 views

Como desenvolver rapidamente e seguindo padrões com CakePHP.

Como desenvolver rapidamente e seguindo padrões com CakePHP.

Statistics

Views

Total Views
7,240
Views on SlideShare
6,778
Embed Views
462

Actions

Likes
11
Downloads
403
Comments
0

5 Embeds 462

http://ivanrosolen.com 418
http://www.slideshare.net 28
http://192.168.0.22 8
http://www.linkedin.com 7
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

CakePHP e o desenvolvimento rápido CakePHP e o desenvolvimento rápido Presentation Transcript

  • 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