symfony2 - reloaded

69
Symfony2 : reloaded Symfony2 : reloaded PHP Conference 2010 PHP Conference 2010

Upload: anderson-casimiro

Post on 18-May-2015

2.058 views

Category:

Technology


2 download

DESCRIPTION

O novo framework do Time de Fabien Potencier vem com tudo! Nova Arquitetura, ainda mais facilidades e um sistema excelente para desenvolvimento.

TRANSCRIPT

Page 1: Symfony2 - Reloaded

Symfony2 : reloadedSymfony2 : reloadedPHP Conference 2010PHP Conference 2010

Page 2: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Duodraco...Duodraco...

● Desenvolvimento web desde 2002● Análise, desenvolvimento, arquitetura

● Zend Certified Engineer '07● Certified Scrum Master '10● Analista no TiqueImóveis● Instrutor Dextra● Evangelista PHP

Page 3: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Falaremos hoje sobreFalaremos hoje sobre

● Framework● Padrões de Projeto● Symfony2

● Sandbox● Configuração● Ferramentas● Colocando a mão na massa

Page 4: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ObjetivosObjetivos

Page 5: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

FrameworkFramework

Page 6: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

FrameworkFramework

● “... é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica” - wikipedia

● É a base para um sistema, sem ser um sistema● Fullstack, glue, orm, gui, etc...● Segurança, acesso a dados, webservices● Design Patterns

Page 7: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

FrameworksFrameworks

● Zend Framework● CakePHP● CodeIgniter● Kohana● Prado● Seagull● Yii

Page 8: Symfony2 - Reloaded

Padrões de ProjetoPadrões de Projeto

Page 9: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Padrões de ProjetoPadrões de Projeto

● Soluções para problemas recorrentes - OOP● Reutilização● Vocabulário comum● Descrição:

● Nome, exemplo, contexto, problema e solução

● Tipos:● Criação, estrutura, comportamento

Page 10: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

CriacionaisCriacionais

● Referem-se à criação de novos objetos● Singleton● Abstract Factory● Factory Method● Builder● Prototype● ...

Page 11: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

EstruturaisEstruturais

● Referem-se à estrutura/arquitetura do sistema● Facade● Proxy● Decorator● Composite● Bridge● ...

Page 12: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ComportamentaisComportamentais

● Responsáveis pelo controle e alteração do comportamento dos objetos

● Iterator● Observer● Strategy● Visitor● Command● ...

Page 13: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Dependency InjectionDependency Injection

● Padrão não-GoF● Manter baixo o nível de acoplamento● Containers “injetam” as dependências nos

objetos que as necessitam● Classes não modificadas por uma alteração de

configuração/ambiente/execução● Usado em DB, logs, roteamento, etc

Page 14: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Dependency InjectionDependency Injection

● Exemplo:● Classe User (sessão)● Utiliza o sistema de sessão do PHP, mas...● Podemos mudar, usando SQLite...● E 2 meses depois usando MongoDB● Ai implementamos um log ... que usa User

– Fonte do exemplo: @fabpot e @guilhermeblanco

Page 15: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

PHP 5.3PHP 5.3

● Performance● Namespaces● Late Static Binding● Lambda, Closures

Page 16: Symfony2 - Reloaded
Page 17: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Symfony2Symfony2

● Construído com foco em performance● Até 3x mais rápido que o symfony 1.4 ou ZF 1.10● Consumo de memória 50% menor

● Framework completo● Boas práticas e segurança

● Django, Spring, Rails e sf1

Page 18: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Symfony2Symfony2

● Fabien Potencier – Sensio Labs● Mesma filosofia do symfony (1)● Fraco acoplamento● Configurável● Testável● Boas ferramentas para o desenvolvimento

Page 19: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Symfony2Symfony2

● PHP 5.3.2+● Nova arquitetura

● Bundles, Kernel, etc..

● PERFORMANCE● Doctrine 2● Twig / SwiftMailer● ZF_Log

Page 20: Symfony2 - Reloaded

ArquiteturaArquitetura

Page 21: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ArquiteturaArquitetura

● Kernel● Bundles● Dependency Injection Container● Request Handler● Event Dispatcher

Page 22: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

KernelKernel

● É criado no index.php (Controller)● Inicializa a aplicação● Carrega a configuração● Inicializa os Bundles

Page 23: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

BundleBundle

● Tudo no Symfony2 é um Bundle● Sua Aplicação● Funcionalidades do Framework

– Cache, Doctrine, Routing, Kernel● Novas funcionalidades (plugins)

● Estrutura de arquivos, que implementam uma funcionalidade

Page 24: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Dependency Injection ContainerDependency Injection Container

● Baseado no Spring● Desenvolvedor não interage com o DIC

● Pelo menos não em um projeto comum

● Implementação ocultada em favor da configuração● XML,YAML,PHP,INI

doctrine.dbal: dbname: phpconf user: pc_user password: a_s3nha

Page 25: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Request HandlerRequest Handler

● Responsável pelo ciclo Request Response→● Suporta Projetos bem estruturados

● Via configuração e roteamento

● Suporta estruturas simples● Pequenos projetos

Page 26: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Event DispatcherEvent Dispatcher

● Base do Kernel e RequestHandler● Implementação de Observer● Desacoplamento e Flexibilidade● Baseado nas notificações do Cocoa (apple)

● Mas redesenhado para o PHP

Page 27: Symfony2 - Reloaded

EstruturaEstrutura

Page 28: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

EstruturaEstrutura

● app/● src/● web/

Page 29: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

EstruturaEstrutura

● app/● cache/● config/● logs/● views/● ...● console

● src/● web/

Page 30: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

EstruturaEstrutura

● app/● src/

● Application/● Bundle/● vendor/● autoload.php

● web/

Page 31: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

EstruturaEstrutura

● app/● src/● Web/

● bundles/● app.php● app_dev.php● check.php

Page 32: Symfony2 - Reloaded

http://symfony.duo/check.phphttp://symfony.duo/check.php

Page 33: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Primeiro RequestPrimeiro Request

● http://symfony.duo/app_dev.php/hello/Duodraco

Page 34: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Front ControllerFront Controller

app_dev.php | app.php | index.php

Nossa Aplicação

Page 35: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

RecursoRecurso

Devemos codar para mapear a Requisição para o Recurso adequado

Page 36: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

RoteamentoRoteamento

● /app/config/routing.[php|yml|xml|ini]:

# app/config/routing.ymlhomepage: pattern: / defaults: { _controller: FrameworkBundle:Default:index }hello: resource: HelloBundle/Resources/config/routing.yml

# src/Application/HelloBundle/Resources/config/routing.ymlhello: pattern: /hello/:name defaults: { _controller: HelloBundle:Hello:index }

Page 37: Symfony2 - Reloaded

ViewView

Page 38: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ViewView

● Simples arquivo com substituições PHP

● src/Application/HelloBundle/Resources/views/Hello/index.php

Page 39: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

TemplatesTemplates

Page 40: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

TemplatesTemplates

● Sistema hierárquico eficiente● HTML/PHP ou Twig● Rota

● HelloBundle:Hello:phpconf.php● HelloBundle:[Controller]:phpconf.twig● [Bundle]:[Controller]:layout.php

Page 41: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

SlotsSlots

● Pequeno trecho, reutilizável

Page 42: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

HelpersHelpers

● Links

Page 43: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

HelpersHelpers

Page 44: Symfony2 - Reloaded

ControllerController

Page 45: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ControllerController

● src/Application/HelloBundle/Controller/HelloController.php

Page 46: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ResponseResponse

● Retornado pelo método render● $this->render() , lembram?

Page 47: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Error HandlingError Handling

● Responde com o Erro HTTP, se aplicável

Page 48: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

RedirectRedirectForwardForward

Page 49: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

RequestRequest

Page 50: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

SessãoSessão

Page 51: Symfony2 - Reloaded

DoctrineDoctrine

Page 52: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

DoctrineDoctrine

● ORM● Object Relational Mapping

● DBAL● DataBase Abstraction Layer

● ODM● Object Document Mapper

– MongoDB

● PDO

Page 53: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

DoctrineDoctrine

Page 54: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Doctrine2Doctrine2MongoDB ODMMongoDB ODM

Page 55: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Doctrine2Doctrine2MongoDBMongoDB

Page 56: Symfony2 - Reloaded

EmailsEmails

Page 57: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

E-mailsE-mailsSwiftMailerSwiftMailer

Page 58: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

E-mailsE-mailsSwiftMailerSwiftMailer

● Podemos usar o Gmail ;)

Page 59: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

FerramentasFerramentas

Page 60: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Web Debug Toolbar [WDT]Web Debug Toolbar [WDT]

● Versão● Symfony | PHP

● Xdebug● APC● Aplicativo● Ambiente● Profiler...

● Controller● HTTP● Sessão● Tempo● Memória

Page 61: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ProfilerProfiler

Page 62: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

AmbientesAmbientes

● Desenvolvimento [development]● WDT, exceptions descritivas,request,sem cache

● Teste [test]● Homologação [staging]● Produção [production]

● Erros mascarados● cache

Page 63: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Mensagens de ErroMensagens de Erro

Page 64: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

ConsoleConsole

● Linha de comando – CLI● Tarefas administrativas● Doctrine

● Conversões, Cache, Migrations, etc

● Bundles● etc

Page 65: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Onde obter?Onde obter?

Page 66: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

http://symfony-reloaded.orghttp://symfony-reloaded.org

Page 67: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

Release Estável prevista paraRelease Estável prevista paraMarço 2011Março 2011

Page 68: Symfony2 - Reloaded

Dúvidas???Dúvidas???

Page 69: Symfony2 - Reloaded

PHPConference Brasil 2010 - Duodraco

● http://duodra.co● [email protected]

● @duodraco [twitter e identi.ca]

● facebook.com/duodraco● linkedin.com/in/andersoncasimiro● slideshare.net/duodraco

ContatoContato