cakephp 2.0 - o que mudou
TRANSCRIPT
![Page 1: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/1.jpg)
CakePHP 2.0Irá abalar o seu mundo!
Felipe Vargas Rigo - NTI – UFMSBaseado nos slides de Graham Weldon
![Page 2: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/2.jpg)
Cake ?
![Page 3: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/3.jpg)
The Cake Is A Lie!
![Page 4: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/4.jpg)
Ops…
![Page 5: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/5.jpg)
![Page 6: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/6.jpg)
O que ? MVC !
![Page 7: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/7.jpg)
CakePHP√
2.0 ?
![Page 8: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/8.jpg)
Suporte ao PHP
Adios PHP 4
![Page 9: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/9.jpg)
Suporte ao PHP
Abandonado o suporte a PHP 4
Suportando PHP 5.2.6 e superiorDepois.. PHP 5.3 e superior
![Page 10: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/10.jpg)
AtalhosRemovidos:e() => echoa() => arrayaa() => assoc arrayr() => str_replaceife() => if / ternaryparams()up() => strtoupperlow() => strtolowerfile_put_contents()uses() => App
array_combine()cache() => Cachearray_diff_key()array_intersect_key()http_build_query()getMicrotime()r() => str_replace$TIME_START
Constante PHP5
![Page 11: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/11.jpg)
Teste de Unidade
Sai o SimpleTestEntra o PHPUnit
![Page 12: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/12.jpg)
Teste de UnidadeIndiscutivelmente uma das maiores
mudançasPHPUnit
Prove um melhor suporte ao PHP 5 do que o SimpleTestMantido mais ativamenteFácil de integrar com o CruiseControlPadrão para Testes de Unidade no PHP
Instala junto com o PEARMais rápido
![Page 13: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/13.jpg)
Teste de Unidade
Mais poderosoMais legalMais? http://phpunit.destartTest() e endTest() serão descontinuados (deprecated)
![Page 14: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/14.jpg)
Teste de Unidade
Asserções ligeiramente diferenteFornecido compatibilidade com código antigo
Exemplo:$this->assertEqualAgora:$this->assertEquals
![Page 15: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/15.jpg)
Teste de Unidade
Não existem mais grupos de testesMas há um modo de fazer isso com PHP Unit
![Page 16: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/16.jpg)
ColeçõesOrganizando
![Page 17: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/17.jpg)
Coleções
Behaviors (Comportamentos)Components (Componentes)Helpers (Ajudantes)Shells (Linha de comando)
![Page 18: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/18.jpg)
Componentes
![Page 19: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/19.jpg)
Componentes
![Page 20: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/20.jpg)
ComponentesA classe base Component agora é obrigatória para todos componentesDeve-se atualizar os componentes e seus construtores, já que os 2 mudaramFicou mais intuitivoMenor necessidade de procurar por documentação
![Page 21: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/21.jpg)
SPLUsado onde foi possível
![Page 22: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/22.jpg)
SPLStandard PHP Library – Biblioteca padrão PHPFornece interações com Arquivos e PastasPossui Classes legais para muitas coisasNão é necessário reimplementar no núcleo O CakePHP 1.x estava a frente do seu tempoO PHP o alcançouHora de cortar a gordura
![Page 23: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/23.jpg)
Não-SPL
Novamente, não reinvente a rodaRemovido código duplicado como codificação JSONAgora pode contar com a funcionalidade fornecida com o PHP
![Page 24: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/24.jpg)
Exceções
![Page 25: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/25.jpg)
Exceções
O uso de exceções para indicar erros no núcleoMais fácil de controlarMais “OO”Removido o cakeError
![Page 26: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/26.jpg)
ExceçõesCrie manipuladores personalizados para cada exceçãoControle o que acontece após a exceção
Exemplo:MediaViewSe arquivo não encontrado:
Trate de maneira inteligente
![Page 27: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/27.jpg)
RequestResponseRefatorando, centralizando.
![Page 28: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/28.jpg)
Request / ResponseO Request representa uma requisição chegandoEle substitui funcionalidades antes incluidas em Controller, Dispatcher, RequestHandler e $this->paramsImplementação do ArrayAccess para manter compatibilidade com versões anteriores
![Page 29: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/29.jpg)
Request / ResponseProtege usuários deles mesmosProtege desenvolvedores dos usuáriosProtege desenvolvedores da estupidezEncapsula tanto a requisição quanto a resposta de maneira a fornecer um local central para lidar com eles, porém mantendo uma flexibilidade
![Page 30: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/30.jpg)
Sessões
![Page 31: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/31.jpg)
SessõesRemovido código duplicado (DRY)Não deveria ser sempre incluida (1.3 fix)Manipulação de dados pelo ModeloAcessível de qualquer lugarPermite personalização de maneira simplesSeparado o Caching, Database, etc.
![Page 32: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/32.jpg)
SessõesSessionHandler
Database Cache PHP
![Page 33: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/33.jpg)
SessõesSessionHandler
Database Cache PHP
![Page 34: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/34.jpg)
SessõesSessionHandler
Database Cache PHP
Seu Mecanismo Louco
![Page 35: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/35.jpg)
SessõesSessionHandler
Database Cache PHP
Seu Mecanismo LoucoInterface
que manipula a Sessão do Cake
![Page 36: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/36.jpg)
Peraí!Isso parece familiar
![Page 37: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/37.jpg)
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
![Page 38: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/38.jpg)
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
![Page 39: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/39.jpg)
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
Seu Super Mecanismo
![Page 40: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/40.jpg)
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
Seu Super Mecanismo
JsBaseEngineHelper
![Page 41: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/41.jpg)
Carregamento Tardio
![Page 42: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/42.jpg)
Carregamento Tardio
Objetos aninhados (alguns deles)ComponentesAjudantes (Helpers)Tarefas (Tasks)Fixtures
Otimização barataCarrega apenas quando você precisa
![Page 43: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/43.jpg)
XMLFaze-lo faz sentido!
![Page 44: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/44.jpg)
XMLAté onde fazer XML faz sentido.... foi feitoXML no 1.x era muito particular do CakePHPNão era fácil integrarNão tratava corretamente os namespacesNão permitia nós ordenados
Construido sobre o SimpleXMLMáis RápidoGenérico
![Page 45: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/45.jpg)
ConsoleO shell se tornou mais
popular do que planejado inicialmente
![Page 46: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/46.jpg)
ConsoleAjuda na geração facilitada
Melhor para usuários de plugins, assim como seus desenvolvedores
Texto do console colorido (ui!)Fácil identificação de ocorrências e erros
Suporte a saída “verbosa”Os Shells estão sendo usados:
reestruturado: app/console/Movido de: app/vendors/
Permite melhor configuração do caminho do console
![Page 47: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/47.jpg)
VisõesHabilitando maior controle de plugins, e reordenação
![Page 48: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/48.jpg)
VisõesOs Callbacks mudaramConforme o framework amadureceu:
Pessoas fizeram novos pluginsOs Plugins precisavam de controleQueria-se alterar a saída
Ordem das operações foi mudada
![Page 49: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/49.jpg)
Visõesavaliar scriptsavaliar o conteúdobeforeLayout()beforeRender()render()
![Page 50: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/50.jpg)
VisõesbeforeLayout()beforeRender()avaliar scriptsavaliar o conteúdorender()
![Page 51: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/51.jpg)
EmailEnvie Emails de qualquer
lugar!É o futuro!
![Page 52: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/52.jpg)
EmailEra restrito ao uso do Controlador com um Componente
... ou um hack terrível para habilita-lo em outros lugares
Agora é uma biblioteca do núcleoUse em qualquer lugarHá Wrappers para prover usos nos modelos e controladoresSimples, e efetivo
![Page 53: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/53.jpg)
Novas Funcionalidades
![Page 54: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/54.jpg)
PDOJá era hora!!
![Page 55: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/55.jpg)
PDOSim, inacreditávelmente, sim!datasources do PDO agora disponíveis na 2.0Trabalho com a Microsoft para suportar o MSSQL foi finalizado com os novos drivers do PDO
![Page 56: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/56.jpg)
PDOTodos bancos de dados trabalham da mesma formaTroca de SGBD de maneira simplesFornece garantias para troca de contexto:
Ambiente de DesenvolvimentoAmbiente de Produção
![Page 57: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/57.jpg)
Reescrevendo URLs
Simplificando requisição de dados
![Page 58: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/58.jpg)
Reescrevendo URLs
Anteriormente:/index.php?url=controller/action/data
Agora:/index.php/controller/action/data
O que isso significa para os desenvolvedores?
![Page 59: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/59.jpg)
Reescrevendo URLs
Simplifica a estrutura interna para reescritaOperações entre servidores mais fácil
Diversos mecanismos de reescritaInstalações que não sejam apache
![Page 60: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/60.jpg)
Parametros Nomeados
Agora permite que arrays sejam passadosPermite até arrays aninhados
![Page 61: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/61.jpg)
Parametros Nomeados
![Page 62: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/62.jpg)
Autenticação
![Page 63: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/63.jpg)
AutenticaçãoCompletamente refatoradaNão faz mais hash automático das senhasAuthentication handlersObjetos Personalizados de autenticaçãoLogar um usuário manualmenteBasic AuthenticationDigest AuthenticationStateless Authentication
![Page 64: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/64.jpg)
Estrutura de
ArquivosE carga de classes
![Page 65: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/65.jpg)
Estrutura de Arquivos
PSR-0http://blog.montmere.com/2011/09/21/psr-0-final-proposal/
App::import => App::usesIsso habilita carregar de maneira tardia
![Page 66: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/66.jpg)
• my_things_controller.php => MyThingsController.php
• form.php (um Helper) => FormHelper.php
• session.php (um Componente) => SessionComponent.php
Nomes de Arquivos
![Page 67: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/67.jpg)
Nomes de PastasConfigConsoleControllerController/ComponentLibLocaleModel
Model/BehaviorPluginTestVendorViewView/Helper
Pastas CamelCased:
Pastas caixa baixa:tmpwebroot
![Page 68: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/68.jpg)
Debugando
Você estava esperando por isso…
![Page 69: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/69.jpg)
DebugandoNão há mais saidas HTML no console de debuggingUsa blocos Ascii para ficar distinto
![Page 70: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/70.jpg)
Mais DetalhesGuia de Migração p/ Cake 2.0:
https://github.com/cakephp/docs/blob/master/en/appendices/2-0-migration-guide.rst
Lighthouse apphttp://cakephp.lighthouseapp.com/projects/42648-cakephp
![Page 71: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/71.jpg)
Pegue o código
http://cakephp.orghttp://github.com/cakephp/cakephp
Branch: 2.0
![Page 72: Cakephp 2.0 - O que mudou](https://reader038.vdocuments.pub/reader038/viewer/2022102323/548bb2feb4795900288b45d0/html5/thumbnails/72.jpg)
Perguntas?Comentários?
Abraços?
http://www.slideshare.net/predominantBaseado nos slides de Graham Weldon, disponíveis em: