Cakephp 2.0 - O que mudou

Post on 16-Apr-2017

1.067 views 0 download

Transcript of 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

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: