Transcript
Page 1: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

U n i v e r s i d a d d e l C a u c a

2 9 / 0 5 / 2 0 1 2

Alexander Romero Narváez

Este es un pequeño tutorial que consta de la

instalación y programación de un ejemplo de este

framework en PHP.

Page 2: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 1

TUTORIAL FRAMEWORK SYMFONY PHP

INGENIERÍA DEL SOFTWARE

PRESENTADO A:

Magister. Libardo Pantoja

PRESENTADO POR:

Alexander Romero Narváez

UNIVERSIDAD DEL CAUCA

FACULTAD DE INGENIERÍA ELECTRÓNICA Y TELECOMUNACIONES

INGENIERÍA DE SISTEMAS

POPAYÁN, 29 DE MAYO DE 2012

Page 3: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 2

Tabla de contenido

INTRODUCCIÓN ............................................................................................................................. 3

REQUISITOS PREVIOS .................................................................................................................... 4

INSTALACIÓN ................................................................................................................................. 7

Instalando Symfony mediante PEAR ......................................................................................... 7

CONFIGURACIÓN SYMFONY PHP ................................................................................................ 10

Crear el Proyecto ..................................................................................................................... 10

Configurar el servidor web ...................................................................................................... 12

Base de datos y esquema ........................................................................................................ 13

EJEMPLO SYMFONY PHP ............................................................................................................. 16

Generando las clases del formulario ....................................................................................... 16

CRUD ....................................................................................................................................... 17

BIBLIOGRAFIA .............................................................................................................................. 21

Page 4: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 3

INTRODUCCIÓN

Symfony es un completo framework diseñado para optimizar el desarrollo de las aplicaciones

web mediante algunas de sus principales características. Para empezar, separa la lógica de

negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona varias

herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web

compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador

dedicarse por completo a los aspectos específicos de cada aplicación. El resultado de todas

estas ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva aplicación

web.

Symfony está desarrollado completamente en PHP 5.3. Ha sido probado en numerosos

proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel. Symfony es

compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y

Microsoft SQL Server. Se puede ejecutar tanto en plataformas *nix (Unix, Linux, etc.) como en

plataformas Windows.

El uso de un framework que utiliza MVC obliga a dividir y organizar el código de acuerdo a las

convenciones establecidas por el framework. El código de la presentación se guarda en la vista,

el código de manipulación de datos se guarda en el modelo y la lógica de procesamiento de las

peticiones constituye el controlador. Aplicar el patrón MVC a una aplicación resulta bastante

útil además de restrictivo

Page 5: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 4

REQUISITOS PREVIOS

El único requisito técnico para instalar Symfony 1.0 es el de disponer de la versión 5.0 o

superior de PHP instalada y configurada correctamente.

Para ello vamos a disponer de la herramienta WAMP que la podemos encontrar en el siguiente

enlace; http://www.wampserver.com/en/. Se debe instalara la versión de su preferencia,

como sugerencia se le pide instalara una versión completamente estable para no tener

inconvenientes con la configuración previa. El uso de un WAMP permite servir páginas html a

internet, además de poder gestionar datos en ellas, al mismo tiempo un WAMP, proporciona

lenguajes de programación para desarrollar aplicaciones web.

Como acto siguiente nos disponemos a la configurar la herramienta WAMP. Para ello

activamos el modulo rewrite de APACHE de la herramienta WAMP, de la siguiente forma:

Y seleccionamos la opción, es decir activando este modo.

Luego tenemos que activar la extensión php_xsl de PHP, del archivo php.ini, de la siguiente

forma:

Page 6: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 5

Y le quitamos el # de la línea de código extension=php_xsl.dll

Para no presentar ningún inconveniente con la instalación de Symfony, necesitamos configurar

las variables de entorno del sistema, esto lo podemos hacer de la siguiente manera:

Nos dirigimos a Panel de control\Sistema y seguridad\Sistema

En Sistema miramos la parte en Protección del sistema/Opciones avanzadas/Variables de

entorno

Page 7: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 6

Seleccionamos de Variables del Sistema, Path y seleccionamos la opción editar

Agregamos las siguientes líneas, separadas de punto y coma (;) y damos clic en Aceptar.

C:\wamp\bin\php\php5.3.0

C:\wamp\bin\mysql\mysql5.0.37\bin

De está manera no vamos a tener ningún problema en el momento de instalar Symfony.

Page 8: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 7

INSTALACIÓN

Antes de empezar a desarrollar aplicaciones Symfony, es necesario instalar los archivos y

librerías que componen el framework. Como Symfony está programado con PHP y sus

creadores han sido muy cuidadosos, Symfony funciona igual de bien en cualquier sistema

operativo (Windows, Mac OS X y Linux).

Por este motivo, la instalación es idéntica en cualquier sistema operativo y tan sólo es

necesario modificar las rutas de los directorios y algún otro detalle menor. Como Symfony se

puede instalar de tres formas diferentes, en primer lugar tienes que decidir qué tipo de

instalación quieres realizar:

Si sólo quieres probar Symfony lo más rápido posible para ver sus posibilidades,

deberías instalarte el entorno de pruebas o sandbox.

Si ya conoces Symfony y quieres que todos tus proyectos utilicen la misma versión del

framework, deberías realizar la instalación mediante PEAR.

Si quieres que cada proyecto disponga de su propia versión de Symfony, deberías

realizar la instalación mediante el repositorio Subversion, que además es la forma

recomendada por los creadores de Symfony.

Las instrucciones de instalación dependen de la versión de Symfony que vayas a utilizar.

Nosotros nos vamos a basar en Symfony 1.0 además la instalación la realizaremos median

PEAR.

Instalando Symfony mediante PEAR La versión de PEAR requerida es 1.4.0 o superior, que ya se incluye en la mayoría de

distribuciones de PHP. Para instalar Symfony de esta manera, en primer lugar se debe añadir el

canal Symfony a PEAR.

En la consola de comandos de tu sistema operativo, añade siguiente comando:

pear channel-discover pear.symfony-project.com

Para instalar Symfony 1.0, simplemente ejecuta el siguiente comando indicando el número de

la versión que quieres instalar:

pear install symfony/symfony-1.0.17

Page 9: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 8

Mediante las siguientes líneas de comando podemos también instalar PEAR

Page 10: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 9

Una vez añadido el canal, ya es posible instalar la última versión estable de Symfony mediante

el siguiente comando:

Los archivos y las utilidades de línea de comandos de Symfony ya se han instalado. Pero te

puedes asegurar mediante la siguiente línea de comando:

symfony –V

Inmediatamente se refleja la versión de Symfony: symfony version 1.0.0

Page 11: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 10

CONFIGURACIÓN SYMFONY PHP

Crear el Proyecto Los proyectos de Symfony siguen una estructura de directorios predefinida. Los comandos que

proporciona Symfony permiten automatizar la creación de nuevos proyectos, ya que se

encargan de crear la estructura de directorios básica del proyecto y con los permisos

adecuados. Por tanto, para crear un proyecto se debe crear un directorio y decirle a Symfony

que cree un proyecto en su interior. Ejecuta las siguientes líneas de comandos como muestra

la figura; para poder realizar un Proyecto en Symfony:

Page 12: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 11

La estructura de los directorios creado por Symfony es la siguiente:

apps/

batch/

cache/

config/

data/

doc/

lib/

log/

plugins/

test/

web/

El proyecto recién creado está incompleto, ya que requiere por lo menos de una aplicación.

Para crear la aplicación, se utiliza el comando symfony init-app, al que se le tiene que pasar

como argumento el nombre de la nueva aplicación. Mediante las siguiente línea de comando

que se muestra en la figura se puede realizar esto:

Page 13: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 12

Configurar el servidor web la configuración necesaria para crear un nuevo servidor virtual en Apache mediante la

modificación del archivo httpd.conf.

Para ello ingresamos a WAMP, ingresamos a APACHE y configuramos el documento

Y agregamos las siguientes líneas de código como se muestra en la imagen:

<VirtualHost *:80>

ServerName miaplicacion.ejemplo.com

DocumentRoot "/home/juan/miproyecto/web"

DirectoryIndex index.php

Alias /sf /$sf_symfony_data_dir/web/sf

<Directory "/$sf_symfony_data_dir/web/sf">

AllowOverride All

Allow from All

</Directory>

<Directory "/home/steve/miproyecto/web">

AllowOverride All

Allow from All

</Directory>

</VirtualHost>

Guardamos y reiniciamos los servicios de WAMP, para que los cambios surtan efecto.

La aplicación recién creada ya se puede acceder con cualquier navegador en esta dirección:

http://localhost:8080/miaplicacion_dev.php/

Page 14: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 13

Base de datos y esquema Una vez creada la estructura básica del proyecto, se definen las opciones de conexión con la

base de datos y se crea el esquema que representa el modelo de datos del proyecto. Las

opciones de conexión se definen en el archivo de configuración

miproyecto/config/databases.yml en el que se deben descomentarea todas sus líneas

eliminando el carácter # que se incluye por defecto al principio de cada línea:

all:

propel:

class: sfPropelDatabase

param:

classname: PropelPDO

dsn: mysql:dbname=miproyecto;host=localhost

username: root

password:

encoding: utf8

persistent: true

pooling: true

La única opción que se debe modificar es el dsn que define las opciones de conexión con la

base de datos. Symfony permite utilizar bases de datos de tipo SQLite, MySQL, PostgreSQL,

Oracle y SQL Server. Cambiar de base de datos sólo requiere modificar la opción dsn, ya que el

resto de la aplicación funciona igual de bien con cualquier sistema gestor de base de datos.

La única opción que se debe modificar es el dsn que define las opciones de conexión con la

base de datos. Symfony permite utilizar bases de datos de tipo SQLite, MySQL, PostgreSQL,

Oracle y SQL Server. Cambiar de base de datos sólo requiere modificar la opción dsn, ya que el

resto de la aplicación funciona igual de bien con cualquier sistema gestor de base de datos.

Page 15: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 14

Una vez definida la conexión con la base de datos, se crea en el archivo

miproyecto/config/schema.yml el esquema de la base de datos que representa el modelo de

datos del proyecto:

propel:

Users:

_attributes: { phpName: User }

id:

first_name: varchar(50)

last_name: varchar(50)

email: varchar(50)

login: varchar(10)

password: varchar(50)

created_at:

El tipo de dato no es obligatorio, ya que en algunos casos, Symfony es capaz de deducirlo a

partir del nombre de la columna. Si por ejemplo una columna se llama id, salvo que se le

indique lo contrario, Symfony supone que es la clave primaria de la tabla y, por tanto, que es

de tipo entero, que no puede tomar valores null y que su valor se autoincrementa.

Otras columnas mágicas son created_at y updated_at. Si una columna se llama created_at,

Symfony la considera de tipo “fecha y hora” y cada vez que se crea un registro en la tabla,

Symfony se encarga de asignarle el valor correcto de forma automática. La columna

updated_at también se considera de tipo “fecha y hora” y su valor se actualiza

automáticamente cada vez que se modifica el registro de la base de datos.

Una vez definido el esquema, se ejecuta el comando symfony propel-build-model para generar

(en el directorio lib/model) todas las clases PHP que se encargan de manejar la base de datos

mediante objetos. Por otra parte, el comando

symfony propel-build-sql

Este genera en el archivo miproyecto/data/sql/lib.model.schema.sql el archivo SQL que

permite crear la base de datos, como muestra la imagen.

Page 16: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 15

También es posible utilizar el comando symfony propel-build-all para generar de forma

simultánea las clases del modelo y el archivo SQL. Los comandos anteriores se utilizan cuando

no existía previamente la base de datos.

Si antes de empezar el proyecto Symfony ya dispones de una base de datos, puedes hacer el

trabajo inverso: generar el esquema y las clases PHP a partir de una base de datos existente.

Page 17: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 16

EJEMPLO SYMFONY PHP

Generando las clases del formulario En los siguientes ejemplos se va a modificar la información de la tabla articulo Para ello, se

crean formularios asociados a cada una de las tablas y se configuran los widgets y validadores

relacionados con el esquema de la base de datos. Aunque es posible crear estos formularios a

mano, se trata de una tarea tediosa y pesada, además de que obliga a repetir la misma

información en varios archivos (nombre de columans y campos, máximo tamaño de columnas

y campos, etc.) Además, si los formularios se hacen a mano, cada vez que se modifica el

modelo, se debe modificar la clase del formulario asociado. Afortunadamente, el plugin de

Propel incluye una tarea llamada propel_build-forms que automatiza todo este proceso y

genera los formularios relacionados con un objeto del modelo de datos:

$ ./symfony propel:build-forms

Después de ejecutar esta tarea, se crea una estructura de archivos en el directorio lib/form/.

Considerando el modelo de datos del ejemplo anterior, se crea la siguiente estructura de

archivos:

lib/

form/

BaseFormPropel.class.php

ArticuloForm.class.php

ArticuloEtiquetaForm.class.php

AutorForm.class.php

base/

BaseArticuloForm.class.php

BaseArticuloEtiquetaForm.class.php

BaseAutorForm.class.php

Clase BaseAutorForm que representa el formulario de la tabla autor, lleva este segmento de

código.

class BaseAutorForm extends BaseFormPropel

{

public function setup()

{

$this->setWidgets(array(

'id' => new sfWidgetFormInputHidden(),

'nombre' => new sfWidgetFormInput(),

'apellidos' => new sfWidgetFormInput(),

'email' => new sfWidgetFormInput(),

));

$this->setValidators(array(

Page 18: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 17

'id' => new sfValidatorPropelChoice(array('model' =>

'Autor', 'column' => 'id', 'required' => false)),

'nombre' => new sfValidatorString(array('max_length' => 20,

'required' => false)),

'apellidos' => new sfValidatorString(array('max_length' => 20,

'required' => false)),

'email' => new sfValidatorString(array('max_length' =>

255)),

));

$this->widgetSchema->setNameFormat('autor[%s]');

$this->errorSchema = new sfValidatorErrorSchema($this-

>validatorSchema);

parent::setup();

}

public function getModelName()

{

return 'Autor';

}

}

CRUD frontend: nombre de la aplicación en la que se va a crear el módulo

autor: nombre del módulo que se va a crear

Autor: nombre de la clase del modelo en la que se basa el módulo

En la clase autorActions escribir las líneas de código

class autorActions extends sfActions

{

public function executeIndex()

{

$this->autorList = AutorPeer::doSelect(new Criteria());

}

public function executeCreate()

{

$this->form = new AutorForm();

$this->setTemplate('edit');

}

public function executeEdit($request)

Page 19: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 18

{

$this->form = new AutorForm(AutorPeer::retrieveByPk($request-

>getParameter('id')));

}

public function executeUpdate($request)

{

$this->forward404Unless($request->isMethod('post'));

$this->form = new AutorForm(AutorPeer::retrieveByPk($request-

>getParameter('id')));

$this->form->bind($request->getParameter('autor'));

if ($this->form->isValid())

{

$autor = $this->form->save();

$this->redirect('autor/edit?id='.$autor->getId());

}

$this->setTemplate('edit');

}

public function executeDelete($request)

{

$this->forward404Unless($autor = AutorPeer::retrieveByPk($request-

>getParameter('id')));

$autor->delete();

$this->redirect('autor/index');

}

}

Page 20: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 19

Luego, para poder mostrar la información se debe realizar el siguiente segmento de código en

editSuccess

<?php $autor = $form->getObject() ?>

<h1><?php echo $autor->isNew() ? 'New' : 'Edit' ?> Autor</h1>

<form action="<?php echo url_for('autor/edit'.(!$autor->isNew() ? '?id='.$autor-

>getId() : '')) ?>" method="post" <?php $form->isMultipart() and print

'enctype="multipart/form-data" ' ?>>

<table>

<tfoot>

<tr>

<td colspan="2">

&nbsp;<a href="<?php echo url_for('autor/index') ?>">Cancel</a>

<?php if (!$autor->isNew()): ?>

&nbsp;<?php echo link_to('Delete', 'autor/delete?id='.$autor->getId(),

array('post' => true, 'confirm' => 'Are you sure?')) ?>

<?php endif; ?>

<input type="submit" value="Save" />

</td>

</tr>

</tfoot>

<tbody>

<?php echo $form ?>

</tbody>

</table>

</form>

Page 21: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 20

CONCLUSIONES Y LECCIONES APRENDIDAS

Este framework (Symfony) antes de resultar ser productivo para realizar aplicaciones web y

comprender su funcionamiento, requiere de muchas horas de estudio, pero medida a que nos

adentramos a este framework, se llega a dar cuenta de que el tiempo invertido de estudio

valió la pena. A pesar de que el trabajo realizado en este tutorial no muestra en gran manera

del funcionamiento de symfony, podemos concluir de que se pude puede realizar

actualizaciones y mantenimiento a las aplicaciones web, esto se debe a que la generación e

código es de muy buena calidad y fácil entender. Symfony a grandes rasgos en un framework

muy completo, estable, con muy buena documentación frente a todo lo que Symfony nos

puede ofrecer. Uno de las grandes ventajas que presenta este framework es que se trata de

software libre, con licencia MIT, con la que puedes desarrollar aplicaciones libres o

comerciales, además de que funciona con PHP, lo que garantiza sin duda un muy buen

funcionamiento, además de que programar con Symfony resulta ser muy fácil, ya que

simplifica en gran manera las aplicaciones de patrones de diseño, entre otras muchas ventajas

que presenta este framework.

Un problema que puede resultar con este framework; es la instalación de este, ya que toca

tener en cuenta muchos detalles, como por ejemplo el de modificar o editar las variables de

entorno del sistema operativo, en este caso el Path, este es un conflicto que se tiene por lo

general, ya que si no se realiza, las instalación no se puede realizar con satisfacción.

Page 22: Framework Symfony PHP - artemisa.unicauca.edu.coartemisa.unicauca.edu.co/~aromero/TutorialFrameworkPHP.pdf · Symfony es un completo framework diseñado para optimizar el desarrollo

Framework Symfony PHP

Universidad del Cauca – Ingeniería de sistemas Página 21

BIBLIOGRAFÍA

http://trac.symfony-project.org/#Installingsymfony

http://forum.symfony-project.org/

http://www.symfony-project.org/installation

http://www.symfony.es/

http://www.librosweb.es/symfony/index.html


Top Related