Sei sulla pagina 1di 33

Frameworks MVC para el Desarrollo Web - Symfony

Esteban Saavedra López

CEO Opentelematics Internacional Bolivia


jesaavedra@opentelematics.org
http://jesaavedra.opentelematics.org
http://esteban.profesionales.org

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 1 / 33
Tabla de Contenidos

1 Introducción a los Frameworks

2 Patron MVC

3 Symfony

4 Caracterı́sticas de un Proyecto Symfony

5 Creación de un proyecto

6 Demostración

7 Conclusiones

8 Referencias

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 2 / 33
Introducción a los Frameworks

Que es un Framework?

Es una estructura de soporte definida en la cual otro proyecto de


software puede ser organizado y desarrollado.
Se han convertido en la piedra angular de la moderna ingenierı́a
del software
Es una estructura software compuesta de componentes
personalizables e intercambiables para el desarrollo de una aplicación.
En otras palabras, es una aplicación genérica incompleta y
configurable a la que podemos aadirle las últimas piezas para
construir una aplicación concreta.

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 3 / 33
Introducción a los Frameworks

Cual el objetivo de un framework?

Desarrollo rápido
Desarrollo estructurado
Reutilización de código
Disminuir el esfuerzo en el desarrollo
Aprovechamos las funcionalidades ya implementadas.
No debemos reinventar la rueda
Nos concetramos directamente en la solución del problema
Tener como aliado a las metodologı́as de desarrollo Agı́les (XP,
AD)

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 4 / 33
Patron MVC

Patrón MVC

Modelo
Controlador
Vista

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 5 / 33
Symfony

Que es Symfony

Es un framework para el desarrollo de aplicaciones web


Es la respuesta de php para Ruby on Rails
Permite el desarrollo de aplicaciones web de forma rápida

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 6 / 33
Symfony

Filosofı́a de Symfony

Reutilización de código
Desarrollar aplicaciones web de forma rápida, sencilla y divertida
Utilizar los mejores componentes actualmente disponibles
Combinar todo en un paquete fácil de usar
Symfony provee el pegamento, de tal forma que uds no haga el suyo.

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 7 / 33
Symfony

Por que Symfony

Se basa en el patrón MVC


Tiene todo lo necesario para desarrollar aplicaciones Web
Soporta Ajax
Posee buena documentación
Es multiplataforma
Posee una numerosa comunidad de desarrolladores y usuarios
Inspirado en Ruby on Rails (Padrino de la mayorı́a de los
Frameworks)
Está en constante desarrollo

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 8 / 33
Symfony

Componentes de Symfony

Propel: ORM para el acceso a


Base de datos
Creole: Maneja la capa de
abstracción de BD
Phing: Mapeador XML
Pake: Gestión de ejecución de
Scripts

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 9 / 33
Symfony

Instalación de Symfony

Utilizando Sandbox
Obtener: http://www.symfony-project.com/get/sf_sandbox.tgz
Basta con descomprimir y publicarlo en el servidr web

Mediante PEAR
pear channel-discover pear.symfony-project.com
pear remote-list -c symfony
pear install symfony/symfony

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 10 / 33
Caracterı́sticas de un Proyecto Symfony

Estructura de un proyecto de Symfony

Symfony proporciona una estructura jerárquica:


Proyecto
Aplicación
Módulo
Acción
Vista

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 11 / 33
Caracterı́sticas de un Proyecto Symfony

Aplicaciones

Todo proyecto contiene una o más aplicaciones


Dentro de un mismo proyecto, las aplicaciones:
Comparten el mismo modelo de datos
Poseen vistas independientes
No comparten sesiones de usuario
Limitación en deducir URLs de las demás aplicaciones

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 12 / 33
Caracterı́sticas de un Proyecto Symfony

Módulos

Una aplicación está compuesta por un conjunto de módulos


Un módulo agrupa a un conjunto de peticiones
Dentro de una misma aplicación, los módulos:
Pueden compartir la misma decoración
Comparten la misma sesión

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 13 / 33
Caracterı́sticas de un Proyecto Symfony

Acciones

Contienen lógica de aplicación


Son implementadas como métodos
Cada petición HTTP resulta en la invocación de una acción
Dicha traducción se denomina routing, y se basa en la URL

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 14 / 33
Caracterı́sticas de un Proyecto Symfony

Vistas

Contienen la lógica de presentación


Se implementan como plantillas PHP/HTML
El resultado de la acción determina qué vista se procesa

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 15 / 33
Caracterı́sticas de un Proyecto Symfony

Entornos

Por naturaleza Synfony, prevee la existencia de 3 entronos:


DEV: Entorno de desarrollo
TEST: Entorno de pruebas
PROD: Entorno de Producción

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 16 / 33
Caracterı́sticas de un Proyecto Symfony

Creación de un proyecto

Instrucción
symfony init-project libros

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 17 / 33
Caracterı́sticas de un Proyecto Symfony

Que generó esto?

Una estructura jerárquica de directorios:


Apps Código de las aplicaciones
Batch Scripts para la lı́nea de comandos
Cache Caché de la conguración
Cong Conguración global del proyecto
Data Schema SQL, datos de prueba
Lib El modelo y bibliotecas de terceros
Log Registros de actividad de Symfony
Plugins Plugins instalados para la el proyecto
Test Pruebas de testeo
Web Raı́z web: CSSs, JSs, etc.

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 18 / 33
Creación de un proyecto

Pasos para crear un proyecto

1 Crear el proyecto
2 Crear la aplicación
3 Crear el código del modelo de datos
4 Generar el modelo de datos
5 Crear la base de datos (SQL)
6 Generar los CRUDs
7 Adecuar los templates (CSS y/o JavaScript)
8 Publicar la Aplicación

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 19 / 33
Creación de un proyecto

1. Creación de un proyecto
Instrucción
symfony init-project libros

Detalles del proyecto


>> dir+ /home/jesaavedra/aplic_web/symfony/libros/batch
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/test
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/test/unit
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/test/functional
.....
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/web/images
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/web/js
>> file+ /home/jesaavedra/aplic_web/symfony/libros/web/robots.txt
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/web/uploads
....
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/plugins
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/config
>> file+ /home/jesaavedra/aplic_web/symfony/libros/config/schema.yml
>> file+ /home/jesaavedra/aplic_web/symfony/libros/config/databases.yml
....
>> tokens /home/jesaavedra/aplic_web/symfony/libros/config/propel.ini
>> tokens /home/jesaavedra/aplic_web/symfony/libros/config/propel.ini
>> tokens /home/jesaavedra/aplic_web/symfony/libros/config/config.php
>> chmod 777 /home/jesaavedra/aplic_web/symfony/libros/cache
>> chmod 777 /home/jesaavedra/aplic_web/symfony/libros/log
.....

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 20 / 33
Creación de un proyecto

2. Creación de la aplicación
Instrucción
symfony init-app libros

Detalles de la aplicac’on
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/apps/libros/config
>> file+ /home/jesaavedra/aplic_web/symf...apps/libros/config/security.yml
>> file+ /home/jesaavedra/aplic_web/symf...bros/apps/libros/config/app.yml
>> file+ /home/jesaavedra/aplic_web/symf...os/apps/libros/config/cache.yml
>> file+ /home/jesaavedra/aplic_web/symf...ros/apps/libros/config/i18n.yml
>> file+ /home/jesaavedra/aplic_web/symf...pps/libros/config/factories.yml
>> file+ /home/jesaavedra/aplic_web/symf.../apps/libros/config/routing.yml
>> file+ /home/jesaavedra/aplic_web/symf...s/apps/libros/config/config.php
>> file+ /home/jesaavedra/aplic_web/symf...apps/libros/config/settings.yml
.....
>> tokens /home/jesaavedra/aplic_web/symf...apps/libros/config/settings.yml
>> file+ /home/jesaavedra/aplic_web/symfony/libros/web/index.php
>> file+ /home/jesaavedra/aplic_web/symfony/libros/web/libros_dev.php
>> tokens /home/jesaavedra/aplic_web/symfony/libros/web/index.php
>> tokens /home/jesaavedra/aplic_web/symfony/libros/web/libros_dev.php
>> chmod 777 /home/jesaavedra/aplic_web/symfony/libros/cache
>> chmod 777 /home/jesaavedra/aplic_web/symfony/libros/log
>> chmod 777 /home/jesaavedra/aplic_web/symfony/libros/web/uploads
>> chmod 777 /home/jesaavedra/aplic_web/symfony/libros/symfony
>> chmod 777 web/uploads/assets
>> dir+ /home/jesaavedra/aplic_web/symfony/libros/test/functional/libros

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 21 / 33
Creación de un proyecto

3. Crear el código del modelo de datos


Editar el archivo libros/config/schema.yml
Detalles del modelo
---
propel:
cliente:
_attributes: { phpName: Cliente }
idMethod: native
id:
type: INTEGER
required: true
autoIncrement: true
primaryKey: true
paterno:
type: VARCHAR
size: 25
materno:
type: VARCHAR
size: 25
nombre:
type: VARCHAR
size: 25
ci:
type: VARCHAR
size: 10
direccion:
type: VARCHAR
size: 75
..........

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 22 / 33
Creación de un proyecto

4. Generar el modelo de datos


Instrucción
symfony propel-build-model

Detalles de la generación del modelo


[propel-om] Target database type: mysql
[propel-om] Target package: lib.model
[propel-om] Using template path: /usr/share/php/symfony/vendor/propel-generator/templates
[propel-om] Output directory: /home/jesaavedra/aplic_web/symfony/libros
[propel-om] Processing: generated-schema.xml
[propel-om] Processing Datamodel : JoinedDataModel
[propel-om] - processing database : propel
[propel-om] + cliente
[propel-om] -> BaseClientePeer [builder: SfPeerBuilder]
[propel-om] -> BaseCliente [builder: SfObjectBuilder]
[propel-om] -> ClienteMapBuilder [builder: SfMapBuilderBuilder]
[propel-om] -> ClientePeer [builder: SfExtensionPeerBuilder]
[propel-om] -> Cliente [builder: SfExtensionObjectBuilder]
[propel-om] + libro
[propel-om] -> BaseLibroPeer [builder: SfPeerBuilder]
[propel-om] -> BaseLibro [builder: SfObjectBuilder]
[propel-om] -> LibroMapBuilder [builder: SfMapBuilderBuilder]
[propel-om] -> LibroPeer [builder: SfExtensionPeerBuilder]
[propel-om] -> Libro [builder: SfExtensionObjectBuilder]
.....

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 23 / 33
Creación de un proyecto

5. Generando el SQL de creación de la BD

Instrucción
symfony propel-build-sql

Salı́da
......

propel > sql:


[echo] +------------------------------------------+
[echo] | |
[echo] | Generating SQL for YOUR Propel project! |
[echo] | |
[echo] +------------------------------------------+
[phingcall] Calling Buildfile ’/usr/share/php/symfony/vendor/propel-generator/build-propel.xml’ with target ’sq
[property] Loading /usr/share/php/symfony/vendor/propel-generator/./default.properties

propel > sql-template:


[propel-sql] Processing: generated-schema.xml
[propel-sql] Writing to SQL file: /home/jesaavedra/aplic_web/symfony/libros/data/sql/lib.model.schema.sql
[propel-sql] + cliente [builder: MysqlDDLBuilder]
[propel-sql] + compra [builder: MysqlDDLBuilder]
[propel-sql] + libro [builder: MysqlDDLBuilder]
[propel-sql] + pago [builder: MysqlDDLBuilder]

BUILD FINISHED

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 24 / 33
Creación de un proyecto

6. Generando los CRUDs

Instrucción
symfony propel-generate-crud libros cliente Cliente

Salı́da
>> dir+ /home/jesaavedra/aplic_web/symf.../libros/modules/cliente/actions
>> file+ /home/jesaavedra/aplic_web/symf...iente/actions/actions.class.php
>> dir+ /home/jesaavedra/aplic_web/symf...ibros/modules/cliente/templates
>> file+ /home/jesaavedra/aplic_web/symf...iente/templates/editSuccess.php
>> file+ /home/jesaavedra/aplic_web/symf...iente/templates/listSuccess.php
>> file+ /home/jesaavedra/aplic_web/symf...iente/templates/showSuccess.php
>> tokens /home/jesaavedra/aplic_web/symf...iente/actions/actions.class.php
>> tokens /home/jesaavedra/aplic_web/symf...iente/actions/actions.class.php
>> tokens /home/jesaavedra/aplic_web/symf...iente/templates/editSuccess.php
>> tokens /home/jesaavedra/aplic_web/symf...iente/templates/listSuccess.php
>> tokens /home/jesaavedra/aplic_web/symf...iente/templates/showSuccess.php
>> file+ /home/jesaavedra/aplic_web/symf...l/libros/clienteActionsTest.php
>> tokens /home/jesaavedra/aplic_web/symf...l/libros/clienteActionsTest.php
>> file- /home/jesaavedra/aplic_web/symf...iente/templates/showSuccess.php
>> file- /home/jesaavedra/aplic_web/symf...iente/templates/listSuccess.php
>> file- /home/jesaavedra/aplic_web/symf...iente/templates/editSuccess.php
>> dir- /home/jesaavedra/aplic_web/symf...bfb75802c/autoCliente/templates
>> file- /home/jesaavedra/aplic_web/symf...iente/actions/actions.class.php
>> dir- /home/jesaavedra/aplic_web/symf...f1bfb75802c/autoCliente/actions
>> dir- /home/jesaavedra/aplic_web/symf...eb341f72f1bfb75802c/autoCliente

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 25 / 33
Creación de un proyecto

Acceso al proyecto
Instrucción
http://libros

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 26 / 33
Creación de un proyecto

Adecuaciones

Una vez generada gran parte del proyecto (forma muy general), se puede
proceder a realizar adecuaciones en:
Controlador (actions)
Vistas (templates)
Formas de acceso en las URL (routing )
Validacion de formularios
Efectos especiales

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 27 / 33
Creación de un proyecto

Proyecto desplegado

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 28 / 33
Demostración

Ejemplo de aplicacion desarrollada

Demostración

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 29 / 33
Conclusiones

Conclusiones

Symfony:
Tiene todo lo necesario para desarrollar aplicaciones Web
Soporta Ajax
Posee buena documentación
Es multiplataforma
Esta en constante desarrollo (muchas funcionalidades en base plugins)
Al tener como aliado a las metodologı́as de desarrollo Agı́les (XP,
AD), se convierte en un fuerte candidatos para desarrollo de
aplicaciones web.

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 30 / 33
Referencias

Referencias

http://www.symfony-project.com
http://www.symfony.es

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 31 / 33
Referencias

Preguntas

Preguntas
Preguntas, dudas, consultas, ...

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 32 / 33
Referencias

Agradecimientos

Gracias...

Esteban Saavedra López (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony Nov. 2007 33 / 33

Potrebbero piacerti anche