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.
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/
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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
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. →
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
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
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)