Desarrollo de aplicaciones web con symfony
Matias MontenegroLuciano 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-schemaphp symfony propel:build --sqlphp 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 ConfiguracionesYAML
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
ReferenciasSymfony 2http://symfony.comSymfony 1.*http://symfony-project.org
Comunidad en español:http://symfony.es
Top Related