Copy and paste the code below into your blog post or website
Copy URL
Embed into WordPress (learn more)
Comments
comments powered by DisqusPresentation Slides & Transcript
Presentation Slides & Transcript
SYMFONY 2 velocidad 2 jueves 15 de diciembre de 11
Quien soy Marcos Quesada Desarrollador en Runroom Certificacin 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 ! Reutilizacin del cdigo 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 suplantacin de usuario) jueves 15 de diciembre de 11
Componentes jueves 15 de diciembre de 11
10 Performance Symfony 2 es: - 2 veces mas rpido que symfony 1.4 - 3.5 veces mas rpido Zend Framework 1.11 Como consigue ser tan rpido? -PHP 5.3.2 -APC : precompilado bytecoding -Lazy Loading Cache Interna: archivos de configuracin, 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 Presentacin 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 ! Reutilizacin de cdigo ! 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 ! Validacin por metadatos $form->isValid() jueves 15 de diciembre de 11
TWIG ! Templates implementadas con el patron decorator El patrn 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 %}
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 11TWIG 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 ! Reutilizacin de cdigo ! Flexibilidad ! services & containers ! inyeccin 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
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