SYMFONY

lunes, 21 de febrero de 2011

SYMFONY

INTRODUCCIÓN

Symfony es un framework PHP que facilita el desarrollo de las aplicaciones web. Symfony se encarga de todos los aspectos comunes y aburridos de las aplicaciones web, dejando que el programador se dedique a aportar valor desarrollando las características únicas de cada proyecto.
Si todavía programas aplicaciones PHP a mano, se está perdiendo el tiempo y mucho dinero. Symfony aumenta exponencialmente la productividad y ayuda a mejorar la calidad de sus aplicaciones web aplicando todas las buenas prácticas y patrones de diseño que se han definido para la web.
Symfony es además el framework más documentado del mundo, ya que cuenta con miles de páginas de documentación distribuidas en varios libros gratuitos y decenas de tutoriales.

Características

• Fácil de instalar y configurar en sistemas Windows, Mac y Linux
• Funciona con todas las bases de datos comunes (MySQL, PostgreSQL, SQLite, Oracle, MS SQL Server)
• Compatible solamente con PHP 5 desde hace años, para asegurar el mayor rendimiento y acceso a las características más avanzadas de PHP
• Basado en la premisa de "convenir en vez de configurar", en la que el desarrollador solo debe configurar aquello que no es convencional
• Preparado para aplicaciones empresariales, ya que se puede adaptar con facilidad a las políticas y arquitecturas propias de cada empresa u organización
• Flexible hasta cualquier límite y extensible mediante un completo mecanismo de plugins
• Publicado bajo licencia MIT de software libre y apoyado por una empresa comprometida con su desarrollo
• Traducido a más de 40 idiomas y fácilmente traducible a cualquier otro idioma

Symfony es adecuado tanto para programadores expertos como para principiantes del desarrollo web. El principal argumento para decidir si deberías o no utilizar Symfony es el tamaño del proyecto.
Si se va a desarrollar un sitio web sencillo con 5 o 10 páginas diferentes, acceso simple a bases de datos y no es importante asegurar un gran rendimiento o una documentación adecuada, debería realizar su proyecto sólo con PHP.
Sin embargo, si se desarrolla aplicaciones web medianas o complejas, en las que es importante la productividad de su desarrollo, la facilidad de su mantenimiento, su seguridad y la garantía de utilizar librerías probadas en algunos de los sitios web más grandes de Internet, entonces se debería utilizar un buen framework como Symfony.
Si es un programador web profesional y muy experimentado, es posible que conozca otros frameworks y lenguajes. Si se busca un equivalente en PHP para Grails, Struts, Spring, RubyOnRails o Django, entonces Symfony es lo que se estaba buscando.

INSTALACIÓN DE SYMFONY

Para realizar la instalación de symfony en un entorno GNU/Linux necesitamos tener instalados los siguientes paquetes:

  • Apache2
  • Php5
  • MySQL
  • Php5-xsl
  • Php-apc

Este tutorial se basa en el tutorial de instalación de la pagina oficial de symfony, el mismo que lo podemos encontrar en: http://www.symfony-project.org/jobeet/1_4/Doctrine/es/.

Como primer paso debemos crear una carpeta, en cualquier directorio que queramos que en este caso se llamará ingeniería; para ello abrimos una terminal y escribimos el siguiente comando:

mkdir /home/beto/ingenieria/

Luego nos ubicamos dentro de la carpeta mediante el comando

cd /home/beto/ingenieria/

Luego vamos a crear los subdirectorios lib/vendor con el siguiente comando:

mkdir -p lib/vendor

Luego de hacer esto descargamos el symfony de la pagina oficial y lo descomprimimos en el directorio vendor, le cambiamos de nombre de manera que el nombre de la carpeta sea solo symfony. Una vez hecho esto vamos al terminal y chequeamos si la configuracion de php cumple con los requisitos mínimos y para ello escribimos el siguiente comando:
pphp lib/vendor/symfony/data/bin/check_configuration.php
php lib/vendor/symfony/data/bin/check_configuration.php

Obteniendo lo siguiente:

Como vemos en la imagen nos aparecen algunos errores. Debajo de la descripción del error encontramos la solución al mismo. En este caso para los dos primeros errores debemos instalar el paquete php5-xsl y el paquete php-apc; los podemos instalar desde el gestor de paquetes synaptic o utilizando el comando sudo apt-get install nombrePaquete.

Para el tercer error que se nos presenta debemos editar el archivo php.ini como nos dice allí el comando show_open_tag debe ser puesto en Off. Para hacer esto escribimos en el terminal el siguiente comando:

sudo gedit /etc/php5/cli/php.ini


Si al ejecutar de nuevo el comando
php lib/vendor/symfony/data/bin/check_configuration.php

no aparece ningun error entonces escribimos en la terminal
php lib/vendor/symfony/data/bin/symfony -V

para comprobar que symfony se ha instalado correctamente.

La herramienta symfony es muy poderosa si queremos ver las opciones y tareas disponibles escribimos en la terminal el comando:

php lib/vendor/symfony/data/bin/symfony


Creación de un proyecto

Para la creación de un proyecto en symfony, debemos estar en la carpeta raíz, es decir dentro de la carpeta Joobet creada. Si no lo estamos escribimos en el terminal el comando

cd /home/beto/ingenieria/

Una vez ubicados allí ejecutamos el comando:

php lib/vendor/symfony/data/bin/symfony generate:project ingenieria


La tarea generate:project genera por defecto la estructura de directorios y archivos necesarios para un proyecto symfony:

Directorio             Descripción
apps/                    Hospeda todas las aplicaciones del proyecto
cache/                  Los archivos en caché
config/                  Los archivos de configuración del proyecto
lib/                       Las bibliotecas y clases del proyecto
log/                      Los archivos de registro
plugins/                Los plugins instalados
test/                     Los archivos de pruebas unitarias y funcionales
web/                   El directorio raíz web (véase más adelante)

La tarea generate:project también ha creado un atajo symfony en el directorio raíz del proyecto ingenieria para reducir el número de caracteres que tienes que escribir cuando se ejecuta una tarea.
Así, a partir de ahora, en lugar de utilizar la ruta completa al programa de Symfony, vamos a utilizar el atajo symfony.

Posteriormente vamos a crear una aplicación para ello en el terminal ponemos el siguiente comando:

php symfony generate:app frontend

Nos creará los siguientes directorios bajo el directorio apps

Directorio               Descripción
config/                    Los archivos de configuración de la aplicación
lib/                         Las bibliotecas y clases de la aplicación
modules/                El código de la aplicación (MVC)
templates/              La plantilla global

Si revisas el directorio web/, encontrarás dos archivos PHP: index.php y frontend_dev.php. Estos archivos son llamados controladores frontales: todas las peticiones a la aplicación se hacen a través de ellos. Pero, ¿por qué tenemos dos controladores frontales si hemos definido sólo una aplicación?

Ambos archivos apuntan a la misma aplicación pero para distintos entornos. Cuando desarrollas una aplicación, excepto si desarrollas directamente en el servidor de producción, necesitas varios entornos:
El entorno de desarrollo: Este es el ambiente utilizado por desarrolladores web para añadir nuevas funciones, corregir los errores, ...

El entorno de prueba: Este entorno se utiliza para probar automáticamente la aplicación.
El entorno staging: Este entorno es utilizado por el cliente para poner a prueba la aplicación e informar errores o características faltantes.
El entorno de producción: Este es el entorno donde un usuario final interactúa.

CONFIGURACIÓN DEL SERVIDOR WEB

Para realizar la configuracion del servidor web debemos editar el archivo httpd.conf el mismo que se encuentra en /etc/apache2/httpd.conf
En el terminal ejecutamos el siguiente comando:

sudo gedit /etc/apache2/httpd.conf

Luego de abierto el archivo copiamos lo siguiente:
# Asegúrate de tener sólo una vez esta línea en su configuración
NameVirtualHost 127.0.0.1:8080

# Esta es la configuración de Jobeet
Listen 127.0.0.1:8080

DocumentRoot "/home/sfprojects/jobeet/web"
DirectoryIndex index.php

AllowOverride All
Allow from All

Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf

AllowOverride All
Allow from All


Modificamos los directorios de acuerdo a los que tenemos en nuestra maquina:


En esta configuración, Apache escucha en el puerto 8080 de tu máquina, por lo que el sitio web de ingenieria será accesible en la siguiente URL:

http://localhost:8080/

Luego de realizado el cambio en el archivo lo guardamos y reiniciamos apache con el comando

sudo /etc/init.d/apache2 restart

Seguidamente abrimos un navegador y escribimos en la barra de direcciones:

http://localhost:8080/index.php/


Si todo está bien nos aparecerá una pantalla como la siguiente:



La aplicación en el entorno de desarrollo la podemos ver escribiendo:

http://localhost:8080/frontend_dev.php/

Jobeet, el nuevo tutorial de Symfony 1.2


DESCARGAR TUTORIAL COMPLETO DE JOBBET

WEBGRAFÍA:
http://www.librosweb.es/jobeet/capitulo2/nos_vemos_manana1.html