Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Taller Symfony2

Betabeers
December 14, 2011
680

Taller Symfony2

presenta @marcos_quesada

Betabeers

December 14, 2011
Tweet

Transcript

  1. Quien soy Marcos Quesada Desarrollador en Runroom Certificación ZEND PHP

    5.3 Just a professional web searcher! [email protected] @marcos_quesada jueves 15 de diciembre de 11
  2. ¿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
  3. Objetivos  No inventar la rueda  Ruby on Rails

    , Django , Spring... development style  Monkeycode  Reutilización del código jueves 15 de diciembre de 11
  4. 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
  5. 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
  6. HTTP CACHE -implementa HTTP 1.1 + ESI -ESI: simular la

    comunicacion proxy_cache => http_server -<esi:include src="http:// …. -$this>render('NoticiasBundle:Default:destacadas.html.twig', array('noticias' => $noticias), array('standalone' => true) ); -Symfony lo lleva integrado -Proxy cache externo (Varnish , Squid) jueves 15 de diciembre de 11
  7. 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
  8. Modelo  Metadatos al poder!  Entidades  Repositories 

    DataFixtures Flujo de trabajo : manos a la obra! jueves 15 de diciembre de 11
  9. Controllers  Actions  php app/console doctrine:generate:crud  php app/console

    router:debug  Routing.yml jueves 15 de diciembre de 11
  10. 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
  11. TWIG {% for user in users %} <li>{{ user.username }}</li>

    {% else %} <li>No users found</li> {% endfor %} jueves 15 de diciembre de 11
  12. 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 %} <div class="{{ classes | join(" ") }}"> <a href="{{ elem.url }}">{{ elem.name }}</a> </div> {% endfor %} jueves 15 de diciembre de 11
  13. 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
  14. ASSETIC  php app/console assets:install --symlink web/  Plugins: 

    Coffee Script  LESS  JSMin  YUI  OptiPNG jueves 15 de diciembre de 11
  15. 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
  16. 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
  17. Ejemplo de desarrollo  PaginatorBundle  Cortar Slices de un

    fetchAll  N items  Offset  Renderizar el paginador  Widget html jueves 15 de diciembre de 11
  18. Resultado  Accediendo al helper paginator: $myPaginator = $this->get('paginator.service'); 

    Renderizado del paginador <div class="paginator"> {{ paginator() | raw}} </div> jueves 15 de diciembre de 11
  19. 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
  20. + Bundles  FOS User  Sonata Admin  Sonata

    Page  Sonata User  LadyBug jueves 15 de diciembre de 11
  21. 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