symfony2 - reloaded
DESCRIPTION
O novo framework do Time de Fabien Potencier vem com tudo! Nova Arquitetura, ainda mais facilidades e um sistema excelente para desenvolvimento.TRANSCRIPT
Symfony2 : reloadedSymfony2 : reloadedPHP Conference 2010PHP Conference 2010
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
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
PHPConference Brasil 2010 - Duodraco
ObjetivosObjetivos
PHPConference Brasil 2010 - Duodraco
FrameworkFramework
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
PHPConference Brasil 2010 - Duodraco
FrameworksFrameworks
● Zend Framework● CakePHP● CodeIgniter● Kohana● Prado● Seagull● Yii
Padrões de ProjetoPadrões de Projeto
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
PHPConference Brasil 2010 - Duodraco
CriacionaisCriacionais
● Referem-se à criação de novos objetos● Singleton● Abstract Factory● Factory Method● Builder● Prototype● ...
PHPConference Brasil 2010 - Duodraco
EstruturaisEstruturais
● Referem-se à estrutura/arquitetura do sistema● Facade● Proxy● Decorator● Composite● Bridge● ...
PHPConference Brasil 2010 - Duodraco
ComportamentaisComportamentais
● Responsáveis pelo controle e alteração do comportamento dos objetos
● Iterator● Observer● Strategy● Visitor● Command● ...
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
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
PHPConference Brasil 2010 - Duodraco
PHP 5.3PHP 5.3
● Performance● Namespaces● Late Static Binding● Lambda, Closures
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
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
PHPConference Brasil 2010 - Duodraco
Symfony2Symfony2
● PHP 5.3.2+● Nova arquitetura
● Bundles, Kernel, etc..
● PERFORMANCE● Doctrine 2● Twig / SwiftMailer● ZF_Log
ArquiteturaArquitetura
PHPConference Brasil 2010 - Duodraco
ArquiteturaArquitetura
● Kernel● Bundles● Dependency Injection Container● Request Handler● Event Dispatcher
PHPConference Brasil 2010 - Duodraco
KernelKernel
● É criado no index.php (Controller)● Inicializa a aplicação● Carrega a configuração● Inicializa os Bundles
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
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
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
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
EstruturaEstrutura
PHPConference Brasil 2010 - Duodraco
EstruturaEstrutura
● app/● src/● web/
PHPConference Brasil 2010 - Duodraco
EstruturaEstrutura
● app/● cache/● config/● logs/● views/● ...● console
● src/● web/
PHPConference Brasil 2010 - Duodraco
EstruturaEstrutura
● app/● src/
● Application/● Bundle/● vendor/● autoload.php
● web/
PHPConference Brasil 2010 - Duodraco
EstruturaEstrutura
● app/● src/● Web/
● bundles/● app.php● app_dev.php● check.php
http://symfony.duo/check.phphttp://symfony.duo/check.php
PHPConference Brasil 2010 - Duodraco
Primeiro RequestPrimeiro Request
● http://symfony.duo/app_dev.php/hello/Duodraco
PHPConference Brasil 2010 - Duodraco
Front ControllerFront Controller
app_dev.php | app.php | index.php
Nossa Aplicação
PHPConference Brasil 2010 - Duodraco
RecursoRecurso
Devemos codar para mapear a Requisição para o Recurso adequado
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 }
ViewView
PHPConference Brasil 2010 - Duodraco
ViewView
● Simples arquivo com substituições PHP
● src/Application/HelloBundle/Resources/views/Hello/index.php
PHPConference Brasil 2010 - Duodraco
TemplatesTemplates
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
PHPConference Brasil 2010 - Duodraco
SlotsSlots
● Pequeno trecho, reutilizável
PHPConference Brasil 2010 - Duodraco
HelpersHelpers
● Links
PHPConference Brasil 2010 - Duodraco
HelpersHelpers
ControllerController
PHPConference Brasil 2010 - Duodraco
ControllerController
● src/Application/HelloBundle/Controller/HelloController.php
PHPConference Brasil 2010 - Duodraco
ResponseResponse
● Retornado pelo método render● $this->render() , lembram?
PHPConference Brasil 2010 - Duodraco
Error HandlingError Handling
● Responde com o Erro HTTP, se aplicável
PHPConference Brasil 2010 - Duodraco
RedirectRedirectForwardForward
PHPConference Brasil 2010 - Duodraco
RequestRequest
PHPConference Brasil 2010 - Duodraco
SessãoSessão
DoctrineDoctrine
PHPConference Brasil 2010 - Duodraco
DoctrineDoctrine
● ORM● Object Relational Mapping
● DBAL● DataBase Abstraction Layer
● ODM● Object Document Mapper
– MongoDB
● PDO
PHPConference Brasil 2010 - Duodraco
DoctrineDoctrine
PHPConference Brasil 2010 - Duodraco
Doctrine2Doctrine2MongoDB ODMMongoDB ODM
PHPConference Brasil 2010 - Duodraco
Doctrine2Doctrine2MongoDBMongoDB
EmailsEmails
PHPConference Brasil 2010 - Duodraco
E-mailsE-mailsSwiftMailerSwiftMailer
PHPConference Brasil 2010 - Duodraco
E-mailsE-mailsSwiftMailerSwiftMailer
● Podemos usar o Gmail ;)
PHPConference Brasil 2010 - Duodraco
FerramentasFerramentas
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
PHPConference Brasil 2010 - Duodraco
ProfilerProfiler
PHPConference Brasil 2010 - Duodraco
AmbientesAmbientes
● Desenvolvimento [development]● WDT, exceptions descritivas,request,sem cache
● Teste [test]● Homologação [staging]● Produção [production]
● Erros mascarados● cache
PHPConference Brasil 2010 - Duodraco
Mensagens de ErroMensagens de Erro
PHPConference Brasil 2010 - Duodraco
ConsoleConsole
● Linha de comando – CLI● Tarefas administrativas● Doctrine
● Conversões, Cache, Migrations, etc
● Bundles● etc
PHPConference Brasil 2010 - Duodraco
Onde obter?Onde obter?
PHPConference Brasil 2010 - Duodraco
http://symfony-reloaded.orghttp://symfony-reloaded.org
PHPConference Brasil 2010 - Duodraco
Release Estável prevista paraRelease Estável prevista paraMarço 2011Março 2011
Dúvidas???Dúvidas???
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