Download - Cakephp 2.0 - O que mudou
CakePHP 2.0Irá abalar o seu mundo!
Felipe Vargas Rigo - NTI – UFMSBaseado nos slides de Graham Weldon
Cake ?
The Cake Is A Lie!
Ops…
O que ? MVC !
CakePHP√
2.0 ?
Suporte ao PHP
Adios PHP 4
Suporte ao PHP
Abandonado o suporte a PHP 4
Suportando PHP 5.2.6 e superiorDepois.. PHP 5.3 e superior
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
Teste de Unidade
Sai o SimpleTestEntra o PHPUnit
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
Teste de Unidade
Mais poderosoMais legalMais? http://phpunit.destartTest() e endTest() serão descontinuados (deprecated)
Teste de Unidade
Asserções ligeiramente diferenteFornecido compatibilidade com código antigo
Exemplo:$this->assertEqualAgora:$this->assertEquals
Teste de Unidade
Não existem mais grupos de testesMas há um modo de fazer isso com PHP Unit
ColeçõesOrganizando
Coleções
Behaviors (Comportamentos)Components (Componentes)Helpers (Ajudantes)Shells (Linha de comando)
Componentes
Componentes
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
SPLUsado onde foi possível
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
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
Exceções
Exceções
O uso de exceções para indicar erros no núcleoMais fácil de controlarMais “OO”Removido o cakeError
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
RequestResponseRefatorando, centralizando.
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
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
Sessões
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.
SessõesSessionHandler
Database Cache PHP
SessõesSessionHandler
Database Cache PHP
SessõesSessionHandler
Database Cache PHP
Seu Mecanismo Louco
SessõesSessionHandler
Database Cache PHP
Seu Mecanismo LoucoInterface
que manipula a Sessão do Cake
Peraí!Isso parece familiar
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
Seu Super Mecanismo
Javascript (v1.3)JavascriptHelper
jQuery Prototype Mootools
Seu Super Mecanismo
JsBaseEngineHelper
Carregamento Tardio
Carregamento Tardio
Objetos aninhados (alguns deles)ComponentesAjudantes (Helpers)Tarefas (Tasks)Fixtures
Otimização barataCarrega apenas quando você precisa
XMLFaze-lo faz sentido!
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
ConsoleO shell se tornou mais
popular do que planejado inicialmente
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
VisõesHabilitando maior controle de plugins, e reordenação
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
Visõesavaliar scriptsavaliar o conteúdobeforeLayout()beforeRender()render()
VisõesbeforeLayout()beforeRender()avaliar scriptsavaliar o conteúdorender()
EmailEnvie Emails de qualquer
lugar!É o futuro!
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
Novas Funcionalidades
PDOJá era hora!!
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
PDOTodos bancos de dados trabalham da mesma formaTroca de SGBD de maneira simplesFornece garantias para troca de contexto:
Ambiente de DesenvolvimentoAmbiente de Produção
Reescrevendo URLs
Simplificando requisição de dados
Reescrevendo URLs
Anteriormente:/index.php?url=controller/action/data
Agora:/index.php/controller/action/data
O que isso significa para os desenvolvedores?
Reescrevendo URLs
Simplifica a estrutura interna para reescritaOperações entre servidores mais fácil
Diversos mecanismos de reescritaInstalações que não sejam apache
Parametros Nomeados
Agora permite que arrays sejam passadosPermite até arrays aninhados
Parametros Nomeados
Autenticação
AutenticaçãoCompletamente refatoradaNão faz mais hash automático das senhasAuthentication handlersObjetos Personalizados de autenticaçãoLogar um usuário manualmenteBasic AuthenticationDigest AuthenticationStateless Authentication
Estrutura de
ArquivosE carga de classes
Estrutura de Arquivos
PSR-0http://blog.montmere.com/2011/09/21/psr-0-final-proposal/
App::import => App::usesIsso habilita carregar de maneira tardia
• my_things_controller.php => MyThingsController.php
• form.php (um Helper) => FormHelper.php
• session.php (um Componente) => SessionComponent.php
Nomes de Arquivos
Nomes de PastasConfigConsoleControllerController/ComponentLibLocaleModel
Model/BehaviorPluginTestVendorViewView/Helper
Pastas CamelCased:
Pastas caixa baixa:tmpwebroot
Debugando
Você estava esperando por isso…
DebugandoNão há mais saidas HTML no console de debuggingUsa blocos Ascii para ficar distinto
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
Pegue o código
http://cakephp.orghttp://github.com/cakephp/cakephp
Branch: 2.0
Perguntas?Comentários?
Abraços?
http://www.slideshare.net/predominantBaseado nos slides de Graham Weldon, disponíveis em: