by yosvel

Slides
33 slides

Taller Symfony2

Published Jan 16, 2013 in Education
Direct Link :

Taller Symfony2... Read more

Read less


Comments

comments powered by Disqus

Presentation Slides & Transcript

Presentation Slides & Transcript

SYMFONY 2 velocidad 2 jueves 15 de diciembre de 11

Quien soy Marcos Quesada Desarrollador en Runroom Certificaci—n ZEND PHP 5.3 Just a professional web searcher! marcos.quesadas@gmail.com @marcos_quesada jueves 15 de diciembre de 11

ÀQue es Symfony? First, Symfony2 is a reusable set of standalone, decoupled, and cohesive PHP components that solve common web development problems. Then, based on these components, Symfony2 is also a full-stack web framework. Velocidad de desarrollo & Performance jueves 15 de diciembre de 11

Objetivos ! No inventar la rueda ! Ruby on Rails , Django , Spring... development style ! Monkeycode ! Reutilizaci—n del c—digo jueves 15 de diciembre de 11

Open Source + Community:Òpeople that are part of a larger ecosystem that makes Symfony betterÓ - Symfony 2.0 RC August 2011 - Symfony 2.0.6 : Bug solved! (hack suplantaci—n de usuario) jueves 15 de diciembre de 11

Componentes jueves 15 de diciembre de 11

10 Performance Symfony 2 es: - 2 veces mas r‡pido que symfony 1.4 - 3.5 veces mas r‡pido Zend Framework 1.11 Como consigue ser tan r‡pido? -PHP 5.3.2 -APC : precompilado bytecoding -Lazy Loading Cache Interna: archivos de configuraci—n, templates ... todo se cachea en PHP jueves 15 de diciembre de 11

HTTP CACHE -implementa HTTP 1.1 + ESI -ESI: simular la comunicacion proxy_cache => http_server -

Rendimiento jueves 15 de diciembre de 11

Doctrine 2 Presentaci—n Nacho Martin Doctrine: http://es.scribd.com/doc/34058712/Doctrine jueves 15 de diciembre de 11

Request flow jueves 15 de diciembre de 11

Empezando ! deps & deps.lock ! parameters.ini ! appKernel ! autoload jueves 15 de diciembre de 11

Bundles ! Paquete con una estructura definida, que puede contener cualquier cosa para implementar una funcionalidad ! Reutilizaci—n de c—digo ! Paquetes de terceros ! php app/console generate:bundle jueves 15 de diciembre de 11

Modelo ! Metadatos al poder! ! Entidades ! Repositories ! DataFixtures Flujo de trabajo : manos a la obra! jueves 15 de diciembre de 11

Controllers ! Actions ! php app/console doctrine:generate:crud ! php app/console router:debug ! Routing.yml jueves 15 de diciembre de 11

Forms ! Object Oriented Forms ! Validaci—n por metadatos $form->isValid() jueves 15 de diciembre de 11

TWIG ! Templates implementadas con el patron decorator El patr—n padre deja huecos para que sean rellenados por sus hijos ! Simular al lenguaje de templates de Django ! la primera vez que se ejecuta se cache en php , mejora su rendimiento jueves 15 de diciembre de 11

TWIG {% for user in users %}

  • {{ user.username }}
  • {% else %}
  • No users found
  • {% endfor %} jueves 15 de diciembre de 11

    TWIG {% for elem in arrMenu %} {% set classes = ["topmenu-button"] %} {% if loop.first %}{% set classes = classes|merge(["first"]) %}{% endif %} {% if loop.last %}{% set classes = classes|merge(["last"]) %}{% endif %}

    {% endfor %} jueves 15 de diciembre de 11

    TWIG Formateadores: {{ entity.publishedat | localeDate('{{app.request.session.locale}}', 'full') }} {{ entity.publishedat | date('Y-m-d H:i:s') }} Variables en plantilla: {% set pointer = 0 %} jueves 15 de diciembre de 11

    ASSETIC ! php app/console assets:install --symlink web/ ! Plugins: ! Coffee Script ! LESS ! JSMin ! YUI ! OptiPNG jueves 15 de diciembre de 11

    Assetic + YUI Compressor Config.yml jueves 15 de diciembre de 11

    Assetic + YUI Compressor layout.html.twig jueves 15 de diciembre de 11

    Dependence Injection ! Clave de Symfony 2 ! Reutilizaci—n de c—digo ! Flexibilidad ! services & containers ! inyecci—n de servicios en servicios ! php app/console container:debug jueves 15 de diciembre de 11

    Dependence Injection Desacoplar IndexController de Controller use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\DependencyInjection\ContainerAware; de: $em = $this->getDoctrine()->getEntityManager(); a: $em = $this->get('doctrine')->getEntityManager(); de: return $this->render( a : return $this->container->get('templating')->renderResponse( http://miller.limethinking.co.uk/2011/06/14/symfony2-moving-away-from-the-base-controller/ jueves 15 de diciembre de 11

    Controller as a Service jueves 15 de diciembre de 11

    Ejemplo de desarrollo ! PaginatorBundle ! Cortar Slices de un fetchAll ! N items ! Offset ! Renderizar el paginador ! Widget html jueves 15 de diciembre de 11

    Resultado ! Accediendo al helper paginator: $myPaginator = $this->get('paginator.service'); ! Renderizado del paginador

    {{ paginator() | raw}}
    jueves 15 de diciembre de 11

    Test Unitarios ! phpunit -c app/ ! $request = $client->getRequest(); ! $container = $client->getContainer(); ! $crawler = $client->getCrawler(); http://symfony.com/doc/2.0/book/testing.html jueves 15 de diciembre de 11

    Sismo Bundle jueves 15 de diciembre de 11

    + Bundles ! FOS User ! Sonata Admin ! Sonata Page ! Sonata User ! LadyBug jueves 15 de diciembre de 11

    Referencias ! Symfony.com ! http://www.symfony.es/2011/12/02/sf2vigo-optimizacion-y-rendimiento/ ! http://es.scribd.com/doc/34058712/Doctrine ! http://www.slideshare.net/raulfraile/symfony2-framework-para-php5? from=ss_embed ! http://miller.limethinking.co.uk/2011/06/14/symfony2-moving-away-from-the- base-controller/ ! http://www.slideshare.net/javier.eguiluz/desymfony-2011-twig jueves 15 de diciembre de 11

    Gracias!! marcos.quesadas@gmail.com @marcos_quesada jueves 15 de diciembre de 11