PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
Symfony
1. Frameworks MVC para el Desarrollo Web - Symfony
Esteban Saavedra L´pez
o
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
o Nov. 2007 1 / 33
2. Tabla de Contenidos
1 Introducci´n a los Frameworks
o
2 Patron MVC
3 Symfony
4 Caracter´
ısticas de un Proyecto Symfony
5 Creaci´n de un proyecto
o
6 Demostraci´n
o
7 Conclusiones
8 Referencias
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 2 / 33
3. Introducci´n a los Frameworks
o
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.
o
En otras palabras, es una aplicaci´n gen´rica incompleta y
o e
configurable a la que podemos aadirle las ultimas piezas para
´
construir una aplicaci´n concreta.
o
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 3 / 33
4. Introducci´n a los Frameworks
o
Cual el objetivo de un framework?
Desarrollo r´pido
a
Desarrollo estructurado
Reutilizaci´n de c´digo
o o
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
o
Tener como aliado a las metodolog´ de desarrollo Ag´ (XP,
ıas ıles
AD)
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 4 / 33
5. Patron MVC
Patr´n MVC
o
Modelo
Controlador
Vista
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 5 / 33
6. 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
a
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 6 / 33
7. Symfony
Filosof´ de Symfony
ıa
Reutilizaci´n de c´digo
o o
Desarrollar aplicaciones web de forma r´pida, sencilla y divertida
a
Utilizar los mejores componentes actualmente disponibles
Combinar todo en un paquete f´cil de usar
a
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
o Nov. 2007 7 / 33
8. Symfony
Por que Symfony
Se basa en el patr´n MVC
o
Tiene todo lo necesario para desarrollar aplicaciones Web
Soporta Ajax
Posee buena documentaci´n
o
Es multiplataforma
Posee una numerosa comunidad de desarrolladores y usuarios
Inspirado en Ruby on Rails (Padrino de la mayor´ de los
ıa
Frameworks)
Est´ en constante desarrollo
a
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 8 / 33
9. Symfony
Componentes de Symfony
Propel: ORM para el acceso a
Base de datos
Creole: Maneja la capa de
abstracci´n de BD
o
Phing: Mapeador XML
Pake: Gesti´n de ejecuci´n de
o o
Scripts
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 9 / 33
10. Symfony
Instalaci´n de Symfony
o
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
o Nov. 2007 10 / 33
11. Caracter´
ısticas de un Proyecto Symfony
Estructura de un proyecto de Symfony
Symfony proporciona una estructura jer´rquica:
a
Proyecto
Aplicaci´n
o
M´dulo
o
Acci´n
o
Vista
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 11 / 33
12. Caracter´
ısticas de un Proyecto Symfony
Aplicaciones
Todo proyecto contiene una o m´s aplicaciones
a
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
o a
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 12 / 33
13. Caracter´
ısticas de un Proyecto Symfony
M´dulos
o
Una aplicaci´n est´ compuesta por un conjunto de m´dulos
o a o
Un m´dulo agrupa a un conjunto de peticiones
o
Dentro de una misma aplicaci´n, los m´dulos:
o o
Pueden compartir la misma decoraci´n
o
Comparten la misma sesi´n
o
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 13 / 33
14. Caracter´
ısticas de un Proyecto Symfony
Acciones
Contienen l´gica de aplicaci´n
o o
Son implementadas como m´todos
e
Cada petici´n HTTP resulta en la invocaci´n de una acci´n
o o o
Dicha traducci´n se denomina routing, y se basa en la URL
o
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 14 / 33
15. Caracter´
ısticas de un Proyecto Symfony
Vistas
Contienen la l´gica de presentaci´n
o o
Se implementan como plantillas PHP/HTML
El resultado de la acci´n determina qu´ vista se procesa
o e
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 15 / 33
16. 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
o
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 16 / 33
17. Caracter´
ısticas de un Proyecto Symfony
Creaci´n de un proyecto
o
Instrucci´n
o
symfony init-project libros
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 17 / 33
18. Caracter´
ısticas de un Proyecto Symfony
Que gener´ esto?
o
Una estructura jer´rquica de directorios:
a
Apps C´digo de las aplicaciones
o
Batch Scripts para la l´
ınea de comandos
Cache Cach´ de la conguraci´n
e o
Cong Conguraci´n global del proyecto
o
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´ web: CSSs, JSs, etc.
ız
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 18 / 33
19. Creaci´n de un proyecto
o
Pasos para crear un proyecto
1 Crear el proyecto
2 Crear la aplicaci´n
o
3 Crear el c´digo del modelo de datos
o
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
o
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 19 / 33
20. Creaci´n de un proyecto
o
1. Creaci´n de un proyecto
o
Instrucci´n
o
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
o Nov. 2007 20 / 33
21. Creaci´n de un proyecto
o
2. Creaci´n de la aplicaci´n
o o
Instrucci´n
o
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
o Nov. 2007 21 / 33
22. Creaci´n de un proyecto
o
3. Crear el c´digo del modelo de datos
o
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
o Nov. 2007 22 / 33
23. Creaci´n de un proyecto
o
4. Generar el modelo de datos
Instrucci´n
o
symfony propel-build-model
Detalles de la generaci´n del modelo
o
[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
o Nov. 2007 23 / 33
24. Creaci´n de un proyecto
o
5. Generando el SQL de creaci´n de la BD
o
Instrucci´n
o
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
o Nov. 2007 24 / 33
25. Creaci´n de un proyecto
o
6. Generando los CRUDs
Instrucci´n
o
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
o Nov. 2007 25 / 33
26. Creaci´n de un proyecto
o
Acceso al proyecto
Instrucci´n
o
http://libros
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 26 / 33
27. Creaci´n de un proyecto
o
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
o Nov. 2007 27 / 33
28. Creaci´n de un proyecto
o
Proyecto desplegado
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 28 / 33
29. Demostraci´n
o
Ejemplo de aplicacion desarrollada
Demostraci´n
o
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 29 / 33
30. Conclusiones
Conclusiones
Symfony:
Tiene todo lo necesario para desarrollar aplicaciones Web
Soporta Ajax
Posee buena documentaci´n
o
Es multiplataforma
Esta en constante desarrollo (muchas funcionalidades en base plugins)
Al tener como aliado a las metodolog´ de desarrollo Ag´ (XP,
ıas ıles
AD), se convierte en un fuerte candidatos para desarrollo de
aplicaciones web.
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 30 / 33
31. Referencias
Referencias
http://www.symfony-project.com
http://www.symfony.es
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 31 / 33
32. Referencias
Preguntas
Preguntas
Preguntas, dudas, consultas, ...
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 32 / 33
33. Referencias
Agradecimientos
Gracias...
Esteban Saavedra L´pez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
o Nov. 2007 33 / 33