Cakephp 2.0 - O que mudou

72

Click here to load reader

Transcript of Cakephp 2.0 - O que mudou

Page 1: Cakephp 2.0 - O que mudou

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

Cake ?

Page 3: Cakephp 2.0 - O que mudou

The Cake Is A Lie!

Page 4: Cakephp 2.0 - O que mudou

Ops…

Page 5: Cakephp 2.0 - O que mudou
Page 6: Cakephp 2.0 - O que mudou

O que ? MVC !

Page 7: Cakephp 2.0 - O que mudou

CakePHP√

2.0 ?

Page 8: Cakephp 2.0 - O que mudou

Suporte ao PHP

Adios PHP 4

Page 9: Cakephp 2.0 - O que mudou

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

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

Teste de Unidade

Sai o SimpleTestEntra o PHPUnit

Page 12: Cakephp 2.0 - O que mudou

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

Teste de Unidade

Mais poderosoMais legalMais? http://phpunit.destartTest() e endTest() serão descontinuados (deprecated)

Page 14: Cakephp 2.0 - O que mudou

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

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

ColeçõesOrganizando

Page 17: Cakephp 2.0 - O que mudou

Coleções

Behaviors (Comportamentos)Components (Componentes)Helpers (Ajudantes)Shells (Linha de comando)

Page 18: Cakephp 2.0 - O que mudou

Componentes

Page 19: Cakephp 2.0 - O que mudou

Componentes

Page 20: Cakephp 2.0 - O que mudou

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

SPLUsado onde foi possível

Page 22: Cakephp 2.0 - O que mudou

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

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

Exceções

Page 25: Cakephp 2.0 - O que mudou

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

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

RequestResponseRefatorando, centralizando.

Page 28: Cakephp 2.0 - O que mudou

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

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

Sessões

Page 31: Cakephp 2.0 - O que mudou

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

SessõesSessionHandler

Database Cache PHP

Page 33: Cakephp 2.0 - O que mudou

SessõesSessionHandler

Database Cache PHP

Page 34: Cakephp 2.0 - O que mudou

SessõesSessionHandler

Database Cache PHP

Seu Mecanismo Louco

Page 35: Cakephp 2.0 - O que mudou

SessõesSessionHandler

Database Cache PHP

Seu Mecanismo LoucoInterface

que manipula a Sessão do Cake

Page 36: Cakephp 2.0 - O que mudou

Peraí!Isso parece familiar

Page 37: Cakephp 2.0 - O que mudou

Javascript (v1.3)JavascriptHelper

jQuery Prototype Mootools

Page 38: Cakephp 2.0 - O que mudou

Javascript (v1.3)JavascriptHelper

jQuery Prototype Mootools

Page 39: Cakephp 2.0 - O que mudou

Javascript (v1.3)JavascriptHelper

jQuery Prototype Mootools

Seu Super Mecanismo

Page 40: Cakephp 2.0 - O que mudou

Javascript (v1.3)JavascriptHelper

jQuery Prototype Mootools

Seu Super Mecanismo

JsBaseEngineHelper

Page 41: Cakephp 2.0 - O que mudou

Carregamento Tardio

Page 42: Cakephp 2.0 - O que mudou

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

XMLFaze-lo faz sentido!

Page 44: Cakephp 2.0 - O que mudou

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

ConsoleO shell se tornou mais

popular do que planejado inicialmente

Page 46: Cakephp 2.0 - O que mudou

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

VisõesHabilitando maior controle de plugins, e reordenação

Page 48: Cakephp 2.0 - O que mudou

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

Visõesavaliar scriptsavaliar o conteúdobeforeLayout()beforeRender()render()

Page 50: Cakephp 2.0 - O que mudou

VisõesbeforeLayout()beforeRender()avaliar scriptsavaliar o conteúdorender()

Page 51: Cakephp 2.0 - O que mudou

EmailEnvie Emails de qualquer

lugar!É o futuro!

Page 52: Cakephp 2.0 - O que mudou

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

Novas Funcionalidades

Page 54: Cakephp 2.0 - O que mudou

PDOJá era hora!!

Page 55: Cakephp 2.0 - O que mudou

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

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

Reescrevendo URLs

Simplificando requisição de dados

Page 58: Cakephp 2.0 - O que mudou

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

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

Parametros Nomeados

Agora permite que arrays sejam passadosPermite até arrays aninhados

Page 61: Cakephp 2.0 - O que mudou

Parametros Nomeados

Page 62: Cakephp 2.0 - O que mudou

Autenticação

Page 63: Cakephp 2.0 - O que mudou

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

Estrutura de

ArquivosE carga de classes

Page 65: Cakephp 2.0 - O que mudou

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

• 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

Nomes de PastasConfigConsoleControllerController/ComponentLibLocaleModel

Model/BehaviorPluginTestVendorViewView/Helper

Pastas CamelCased:

Pastas caixa baixa:tmpwebroot

Page 68: Cakephp 2.0 - O que mudou

Debugando

Você estava esperando por isso…

Page 69: Cakephp 2.0 - O que mudou

DebugandoNão há mais saidas HTML no console de debuggingUsa blocos Ascii para ficar distinto

Page 71: Cakephp 2.0 - O que mudou

Pegue o código

http://cakephp.orghttp://github.com/cakephp/cakephp

Branch: 2.0

Page 72: Cakephp 2.0 - O que mudou

Perguntas?Comentários?

Abraços?

http://www.slideshare.net/predominantBaseado nos slides de Graham Weldon, disponíveis em: