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

Primeros pasos con Symfony2

Primeros pasos con Symfony2

Presentación para Seminarios TheEvnt: Symfony2 por César Suárez Ortega

César Suárez Ortega

November 25, 2011
Tweet

More Decks by César Suárez Ortega

Other Decks in Programming

Transcript

  1. Utilidades para... • Routing • Sistema de plantillas. • Gestión

    de formularios. • Gestión de base de datos. • Sistema de caché. • Sistema de validación. • Gestión de seguridad. • Internacionalización. • Envío de correos. • Gestión de “assets”. • Sistema de logging. • Tests unitarios. • Contenedor de servicios. • Ayudas para depuración.
  2. 20% más rápido que Solar 1.0.0beta3 60% más rápido que

    Lithium 0.6 75% más rápido que Yii 1.1.1 2 veces más rápido que symfony 1.4.2 3.5 veces más rápido que Zend 1.10 5.5 veces más rápido que CakePHP 1.2.6 69 veces más rápido que Flow3 1.0.0alpha7 http://blog.newitfarmer.com/php/framework-php/1904/symfony2-performs-betterbetter-performance/
  3. • DependencyInjection • EventDispatcher • HttpFoundation • DomCrawler • ClassLoader

    • CssSelector • HttpKernel • BrowserKit • Templating • Translation • Serializer • Validator • Security • Routing • Console • Process • Config • Finder • Locale • Yaml • Form
  4. Según Fabien Potencier... • Symfony2 is a reusable set of

    standalone, decoupled, and cohesive PHP components that solve common web development problems. http://fabien.potencier.org/article/49/what-is-symfony2 • Symfony2 is also a full-stack web framework.
  5. El desarrollo web se basa SIEMPRE en: • Recibir una

    petición. • Preparar una respuesta. • Enviar una respuesta.
  6. Workflow de Symfony2 • Todas las peticiones ejecutan un controlador

    central. • El sistema de routing determina que acción hay que ejecutar. • Esta acción prepara y devuelve una respuesta.
  7. A Bundle is a directory containing a set of files

    (PHP files, stylesheets, JavaScripts, images, ...) that implement a single feature (a blog, a forum, etc). In Symfony2, (almost) everything lives inside a bundle.
  8. Todos los componentes de Symfony2 son bundles Todo se estructura

    en bundles Tienen una estructura “fija” Los bundles sólo implementan una funcionalidad Son fáciles de portar a otros proyectos
  9. Contienen todo lo necesario para ejecutar la funcionalidad que implementan

    Código PHP Entidades de base de datos Imágenes Formularios Plantillas Validadores CSS JavaScript Configuración
  10. Un proyecto Symfony2 tiene elementos comunes a todos los bundles,

    que los combina con los específicos de los bundles.
  11. Routing • Generalmente tenemos un .PHP que se referencia en

    una URL. • /var/www/miproyecto/contacto.php • http://midominio.com/miproyecto/contacto.php • Si queremos cambiar la URL, tenemos que cambiar la localización de los ficheros. • Si cambiamos la URL, tenemos que cambiar los links de nuestra aplicación.
  12. De esta forma... • Podemos cambiar la ruta sin tocar

    nada más. • Podemos cambiar la acción a ejecutar libremente. • Para generar links, lo haremos a través del nombre de la ruta.
  13. Controladores • Un bundle tiene un número indeterminado de controladores.

    • Se situan en la carpeta Controller. • Un controlador es una clase que extiende Symfony\Bundle\FrameworkBundle\Controller\Controller • Hereda varios métodos de ayuda para acceder a las características de Symfony2.
  14. Acciones • Un método dentro de un controlador. • Nomenclatura:

    nombreAction • Una acción recibe una petición y devuelve una respuesta. • Generalmente tienen asociada una plantilla (vista) para los resultados. • Se acceden vía al sistema de routing. • Son la C de MVC.
  15. Ejemplo • LibraryBundle • DefaultController – indexAction • AuthorController –

    addAction – deleteAction – editAction – showAction • BookController – addAction – deleteAction – editAction – showAction
  16. Sobre las vistas • Son lo que “ve” el usuario

    final. • Generalmente una acción tiene asociada una vista. • Separan la presentación del negocio. • La acción pasa a la vista varios parámetros. • Symfony2 integra el lenguaje de plantillas Twig. • Son la V de MVC.
  17. Instalando Symfony2 • Vamos a http://www.symfony.com • Download Now! •

    Symfony 2.0.6 (tar.gz o zip). • Lo descomprimimos en nuestra carpeta de Apache • En Ubuntu/Linux Mint quedaría: /var/www/Symfony • Entramos en http://localhost/Symfony/web/config.php
  18. Estructura del proyecto • app Configuración general de la herramienta

    → • src Código PHP (aquí van los bundles) → • vendor Librerías → • web Recursos visibles del proyecto. →
  19. src/Acme/DemoBundle • Controller Controladores y acciones → • Resources/config/ Configuración

    propia del Bundle. → • Resources/views/ Vistas. → • Resources/public/ Recursos web propios del Bundle (imágenes, → CSSs, …).
  20. Una ruta simple Bundle (Vendor + Nombre) Controlador. (sin el

    sufijo “Controller”) Acción (sin el sufijo “Action”)
  21. La ruta con nombre “_welcome” corresponde a “/” y ejecuta

    la método indexAction de la clase WelcomeController que es parte del bundle DemoBundle de Acme
  22. app/config/routing_dev.yml Tipo de configuración dentro del bundle Prefijo que van

    a tener todas las rutas del controlador Elemento que coontiene las rutas
  23. En programación, una anotación es una forma de añadir metadatos

    al código fuente que están disponibles para la aplicación en tiempo de ejecución. (de Wikipedia)