Desarrollo de aplicaciones
web con symfony
Matias Montenegro
Luciano Andrade
¿Que es symfony?
 
¿Que es symfony?
●Un Framework de Trabajo
○Herramientas
○ Metodología
●Escrito en PHP
●Licencia MIT  
●Es un Filosofía
●Es una Comunidad
 
¿Que no es symfony?
 
¿Que no es symfony?
●No es una solución genérica
○PHP funciona muy bien
●No es trivial
○Es fácil de aprender y hay mucha documentación
¿Que tiene de bueno?
 
¿Que tiene de bueno?
●Popularidad y tamaño de la comunidad
○# Plugins
○# Libros
● Filosofía
¿Que empresas lo utilizan?
 
¿Que empresas lo utilizan?
http://symfony.com/blog/category/case-studies
Casos de Estudio :
●DailyMotion
●Yahoo Bookmark
●Delicious
●Yahoo Answers
¿Cuando utilizar symfony?
 
¿Cuando utilizar symfony?
●Proyecto Web.
●Proyecto de largo alcance 
●Equipos de trabajo
●Complejidad del Proyecto Media o Grande
Que contiene symfony
 
Que contiene symfony
●Patrones de diseño
●MVC
●ORM
●Plantillas 
●Rutas 
●Entornos
●Plugins, muchos plugins
Patrones de Diseño
 
Patrones de Diseño
●Front Controller
●Command
●Intercepting Filter
●Context Object
●Two Step View
●Helper Object or View Helper
●Table Data Gateway/Row Data Gateway/Active Record
●Single Table Inheritance
●Event Dispatcher 
●Factory
●Singleton
http://obvioushints.blogspot.com/2008/12/symfony-
design-patterns.html
Estructura de un proyecto
● apps/ 
○ frontend/ 
○ backend/ 
● cache/ 
● config/ 
● data/ 
○ sql/ 
● doc/ 
● lib/ 
● model/ 
● log/ 
● plugins/ 
● test/ 
○ bootstrap/ 
○ unit/ 
○ functional/ 
● web/ 
○ css/ 
○ images/ 
○ js/ 
○ uploads/
Estructura de un proyecto
● apps/ 
○ [application name]/ 
■ config/ 
■ i18n/ 
■ lib/ 
■ modules/ 
■ templates/ 
■ layout.php
Framework
MVC
Framework
MVCModelo  Vista  Controlador
Modelo MVC
Estructura de un proyecto
● apps/ 
○ [application name]/ 
■ modules/ 
■ [module name]/ 
■ actions/ 
■ actions.class.php # Controlador 
■ config/
■ lib/ 
■ templates/ 
■ indexSuccess.php # Vista
Modelo === ORM
Framework
MVC
Los ejemplos de código son
del tutorial  Jobeet
http://www.symfony-project.org/jobeet/
Modelo
 
Modelo - schema.yml
Modelo - schema.yml de Jobeet 1/2 
Modelo - schema.yml de Jobeet 2/2 
Modelo - Linea de comandos
php symfony propel:build-schema
php symfony propel:build --sql
php symfony propel:insert-sql 
php symfony propel:build --model    
Modelo - Código PHP
Modelo - Código PHP
Modelo - Código PHP
Modelo - Código PHP
Modelo - Código PHP
Enrutado de Acciones
Routing
Enrutado de Acciones
Queremos generar una URL como '/job/show/id/1'
Enrutado de Acciones
'/job/sensio-labs/paris-france/1/web-developer'
Enrutado de Acciones
Controlador === Acciones
Framework
MVC
Acciones - Un objeto
// apps/frontend/modules/job/actions/actions.class.php
class jobActions extends sfActions
{
    public function executeIndex(sfWebRequest $request){
        $this->jobeet_jobs = Doctrine::getTable('JobeetJob')
                ->createQuery('a')
                ->execute();
    }
}
Se podría acceder a este módulo/acción mediante la url:
                                        '/job/Index'
Acciones - Varios elementos
VISTA === Plantillas
Framework
MVC
Plantillas
Plantillas
Plantillas
Plantillas
Entornos y Configuraciones
YAML
http://www.symfony-project.org/reference/1_4/en/
Configuraciones
●Archivo de Configuración para los entornos.
 http://www.symfony-project.org/reference/1_4/en/03-Configuration-Files-Principles#chapter_03_environment_awareness
 
●Configuración en cascada
 http://www.symfony-project.org/reference/1_4/en/03-Configuration-Files-Principles#chapter_03_configuration_cascade
Entornos y Configuraciones
●settings.yml
●factories.yml
●generator.yml
●databases.yml
●security.yml
●cache.yml
●routing.ym
●app.yml
●filters.yml
●view.yml
Plugins
 
Plugins
●http://www.symfony-project.org/plugins/
●480 Plugins para symfony 1.4
●The plugin section lists 1337 symfony plugins developed by
569 contributors.
 
 
 
Datos al 30/07/2011
sfGuardPlugin
 
sfGuardPlugin
The sfGuardPlugin is a symfony plugin that provides
authentication and authorization features above the standard
security feature of symfony.
 
 
sfThumbnailPlugin
 
sfThumbnailPlugin
The sfThumbnailPlugin creates thumbnails from images. It
relies on your choice of the GD or ImageMagick libraries.
Uso:
Apostrophe
http://apostrophenow.com/
Apostrophe
CMS basado en:
●Symfony1.4
●Doctrine
●MySQL
●Zend Lucene
● minify (http://code.google.com/p/minify/)
Apostrophe
 
 
 
Ejemplo:
Características no nombradas
●Admin Generator
●I18n y l10n
●Formularios
●Filtros
●Cache de contenido y caché de configuraciones
●Seguridad
●Tareas
●Deployment
●Más de doctrine
●Propel
●Logs y Barra de Debug 
●Event Dispatcher
●Symfony 2 
Referencias
Symfony 2
http://symfony.com
Symfony 1.*
http://symfony-project.org
Comunidad en español:
http://symfony.es

Desarrollo de Aplicaciones Web con Symfony 5/10/2011