Symfony Framework para el desarrollo de aplicaciones web
1. Symfony
Framework para el
desarrollo de
aplicaciones web
Symfony es un framework orientado al desarrollo de aplicaciones web de forma sencilla,
rápida y divertida.
En otras palabras, es una aplicación
Introducción ✔
genérica incompleta y configurable a
Hoy en día, con la aparición de nuevas la que podemos añadirle las últimas
metodologías y herramientas en el ámbito de piezas para construir una aplicación
la ingeniería de software, el desarrollo de concreta.
aplicaciones web ha tomado un cause un
tanto distinto a lo que se tenía hace unos
años atrás, ésto representa que, si antes con Objetivos de un framework
el desarrollo y herramientas tradicionales
Desarrollo rápido.
demorábamos semanas y/o meses en ✔
Desarrollo estructurado.
prototipiarlas, meses o hasta años en ✔
Reutilización de código.
desarrollarlas completamente; hoy en día con ✔
Disminuir el esfuerzo en el desarrollo.
la aparición de los frameworks éste tiempo se ✔
Aprovechar las funcionalidades ya
ha reducido considerablemente, ✔
implementadas, no debemos
representando que ahora con la ayuda de
reinventar la rueda.
estas nuevas herramientas como son los
Nos concentramos directamente en la
frameworks y teniendo como aliado a las ✔
solución del problema.
metodologías ágiles de desarrollo, podemos
Tener como aliado a las metodologías
prototipear nuestras aplicaciones en cuestión ✔
de desarrollo ágiles (XP, AD).
de minutos u horas, y terminar su desarrollo
en una par de semanas.
Patrón MVC
Desde la aparición de RoR (Ruby on Rails) el
Que es un framework padrino de todos los frameworks de
desarrollo de aplicaciones web, el patrón
Es una estructura de soporte definida
✔
MCV ha cobrado una notable importancia,
en la cual otro proyecto de software
sobre todo por su cualidad de dividir en
puede ser organizado y desarrollado.
capas el desarrollo de un proyecto o
Se han convertido en la piedra
✔
aplicación web.
angular de la moderna ingeniería del
✔ Modelo: Encargado de modelar y
software.
contener la lógica del dominio de la
Es una estructura software compuesta
✔
aplicación.
de componentes personalizables e
✔ Vista: Encargada de contener la
intercambiables para el desarrollo de
lógica de presentación.
una aplicación.
2. Controlador: Encargado de ser el Posee buena documentación.
✔ ✔
engranaje entre el modelo y la vista, y Es multiplataforma.
✔
también contener la lógica del Posee una numerosa comunidad de
✔
negocio. desarrolladores y usuarios.
Inspirado en Ruby on Rails (Padrino
✔
de la mayoría de los frameworks).
Está en constante desarrollo.
✔
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
✔
Preparando nuestro entorno
de trabajo.
Para empezar a trabajar y desarrollar
aplicaciones web en Symfony, precisamos
Gráfico 1: Patrón MVC
cumplir algunos requisitos como ser:
Que es Symfony Tener instalado y configurado Apache
✔
o cualquier servidor de aplicaciones
con soporte PHP.
Es un framework para el desarrollo de
✔
Tener instalado y configurado PHP 5o
aplicaciones web. ✔
superior.
Es la respuesta de php para Ruby on
✔
Tener instalado algún gestor de base
Rails. ✔
de datos (Sqlite, MySQl, PostgreSQL,
Permite el desarrollo de aplicaciones
✔
MS-SQL, entre otros).
web de forma rápida.
Instalación de Symfony
Filosofía de Symfony
Utilizando Sandbox
Reutilización de código.
✔
✔ Obtener: http://www.symfony-
Desarrollar aplicaciones web de forma
✔
project.com/get/sf_sandbox.tgz
rápida, sencilla y divertida.
✔ Basta con descomprimir y publicarlo
Utilizar los mejores componentes
✔
en el servidor web
actualmente disponibles.
Mediante PEAR
Combinar todo en un paquete fácil de
✔
usar. pear channel-discover
✔
pear.symfony-project.com
Symfony provee el pegamento, de tal
✔
pear remote-list -c symfony
✔
forma que uds. no haga el suyo.
pear install symfony/symfony
✔
Para confirmar que nuestra instalación es
Características de Symfony correcta, introducimos el comando Symfony
-V, en la línea de comando.
Se basa en el patrón MVC.
✔
Tiene todo lo necesario para
✔
desarrollar aplicaciones Web.
Soporta Ajax.
✔
3. Creación de una aplicación
La creación de un proyecto en symfony se la
realiza mediante la instrucción:
symfony init-project aplicacion
Esta instrucción creará una estructura de
directorios y dentro de ellos archivos que
Gráfico 2: Uso del comando Symfony
servirán para configuración, implementación
y depuración de la aplicación
Nuestra primera aplicación
Estructura de directorios
Para una mejor comprensión del potencial de
Symfony en el desarrollo de aplicaciones
Al igual que la mayoría de los frameworks
web, realizaremos una aplicación paso a
orientados al desarrollo de aplicaciones web,
paso.
Symfony cuando crea los proyectos y
aplicaciones, por defecto crea una estructura
Nuestra pequeña aplicación se enmarca en
de directorios definida, estructura que nos
un entorno donde se mantiene el registro de
permite mantener un orden y conocer
eventos (congresos jornadas, etc), a los
exactamente donde se encuentran todos y
cuales concurren varios expositores de
cada uno de los componentes de nuestra
diferentes nacionalidades y donde cada uno
aplicación.
de estos tiene una o más conferencias que
impartir.
Estructura de un Proyecto
Hoy en día, los frameworks mantienen una
forma similar de estructurar sus proyectos,
imaginemos como si se tratase de un
organigrama donde se consideran las
siguientes partes:
Un proyecto contiene una o varias
✔
aplicaciones
Una aplicación tiene uno o varios
✔
módulos
Un módulo tiene una o varias
✔
acciones
Una acción puede o no estar asociada
✔
a una vista
Creación de un proyecto
La creación de un proyecto en symfony se la
realiza mediante la instrucción:
symfony init-project aplicacion
Gráfico 3: Estructura de la aplicación
Esta instrucción creará una estructura de
directorios y dentro de ellos archivos que
servirán para configuración, implementación
y depuración del proyecto
4. manual.
Ejecutando nuestra Crear el esquema del dominio de forma
aplicación automática desde una base de datos ya
existente.
Hasta este momento nuestra aplicación no
En este tutorial haremos uso de la primera
realiza ninguna tarea especifica, pero
alternativa; esta descripción debe ir incluida
podemos observarla ejecutándose en
en el fichero config/schema.yml, así:
algunos de sus entornos, por medio del
browser, como muestra la siguiente figura: ---
propel:
evento:
_attributes: { phpName: Evento }
idMethod: native
id: {type: INTEGER, required: true,
autoIncrement: true, primaryKey: true}
nombre: {type: varchar, size: 50}
ciudad: {type: varchar, size: 50}
inicia: {type: date}
finaliza: {type: date}
sitioweb: {type: varchar, size: 50}
expositor:
_attributes: { phpName: Expositor }
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}
nacionalidad: {type: varchar, size: 25}
email: {type: varchar, size: 50}
conferencia:
_attributes: { phpName: Conferencia }
id: {type: INTEGER, required: true,
autoIncrement: true, primaryKey: true}
evento_id:
Gráfico 4a: Entorno de Producción expositor_id:
fecha: {type: date}
titulo: {type: varchar, size: 50}
resumen:{type: longvarchar}
Generación del modelo
orientado a objetos
Symfony permite generar el modelo orientado
a objetos en base al esquema
(config/schema.yml), modelo que nos
permitirá hacer uso de los conceptos y
facilidades brindadas por el paradigma
orientado a objeto. Esta generación se la
realiza mediante la instrucción:
symfony propel-build-model
Generación del script SQL
Como en nuestra aplicación creamos de
Gráfico 4b: Entorno de desarrollo
forma manual el esquema correspondiente al
dominio de nuestra aplicación, debemos
Modelado del dominio generar el script SQL para la creación de las
tablas correspondientes en la base de datos
Para describir el dominio de nuestra
utilizada en nuestra aplicación, en nuestro
aplicación, symfony provee 2 alternativas:
caso ejecutaremos este script en un servidor
Crear el esquema del dominio de forma
5. mysql. Esta generación se la realiza Rails, para representar la generación de los
mediante la instrucción: artefactos que permiten un uso mas sencillo y
symfony propel-build-sql rápido de las interfaces que permiten
operaciones básicas, denominados de forma
El archivo resultante esta almacenado en genérica CRUDs (Create, Read, Update y
data/sql/lib.model.schema.sql Delete) o ABMs (Altas Bajas y
Modificaciones). El scaffolding aparte de
Acceso a la base de datos crear las interfaces también crea los métodos
que permiten acceder a los atributos de las
Para que nuestra aplicación pueda acceder a distintas clases, con la posibilidad de
la base de datos que contiene las tablas y ampliarlos y permitir mayor interacción y
datos, se deberá configurar el archvio funcionalidad que la provista inicialmente.
config/databases.yml, de la siguiente forma:
all:
Symfony permite 2 tipos de scaffolding:
propel:
class: sfPropelDatabase
param:
Orientadas a los usuarios del sistema.
✔
dsn:
Orientadas a la administración de la
✔
mysql://usuario:clave@localhost/basededatos
aplicación
Scaffolding
Scaffolding es un término introducido por
En este tutorial, haremos uso del scaffolding orientados a los usuarios del sistema, así como se
muestra en la figura.
Gráfico 5: Scaffolding
De forma análoga se debe proceder a generar los scaffolds para todas clases de nuestro
dominio, siempre que sean necesarias.
podemos empezar a probar todas y cada una
Ejecución y pruebas de las características provistas por los
Una vez corriendo nuestra aplicación scaffolds generados:
6. Formularios
✔
Ventanas de dialogo
✔
Relaciones
✔
Efectos JavaScript en ciertos campos
✔
....
✔
Gráfico 9: Ventanas de dialogo
Referencias
[1] http://www.symfony-project.org
[2] http://symfony.es
[3] The Definitive Guide to Symfony
Gráfico 6: Listados
Autor
Gráfico 7: Formulario de entradas Esteban Saavedra López
Líder de la Comunidad Atix (Oruro – Bolivia)
Activista de Software Libre en Bolivia
Email: jesaavedra@opentelematics.org
Website: http://jesaavedra.opentelematics.org
Gráfico 8: Efecto campo date