En este artículo-tutorial explicaremos su funcionamiento en líneas generales y además cómo instalarlo en un servidor con Apache.
¿Y qué es lo interesante realmente? Básicamente que utiliza el modelo vista controlador (MVC) y modulariza completamente la aplicación de forma que:
- Queda dividida en pequeñas aplicaciones llamadas bundles que engloban una funcionalidad completa como por ejemplo: un foro, un chat, una página de pago PayPal, etc.
- El modelo de datos queda empaquetado con un módulo que se llama doctrine. Tú generas entidades: es decir, defines una tabla en forma de objeto, declarando la clase con sus variables y demás. Y entonces doctrine te crea la tablas de datos correspondientes a esos objetos así como sus propios métodos de acceso. Así de fácil: la base de datos permanece siempre independiente de cualquier posible cambio.
- El controlador es el cerebro de la aplicación, la lógica que «sabe» qué hacer con nuestros datos.
- La vista es la parte donde los datos serán representados. De esta forma el controlador, una vez conoce los datos a mostrar, invoca a la vista para decirle: «oye, muestra esto».
Las rutas a las diferentes partes de la aplicación también son generadas automáticamente. Y al final lo que obtienes es lo siguiente: cuando accedes a la página web primero se invoca al controlador frontal, que consulta el archivo de rutas frontal para saber qué bundle hay que invocar por defecto. Lo que se invoca realmente es el controlador de este bundle, y éste a su vez sabe lo que debe hacer, que normalmente será invocar al modelo para extraer los datos que le hagan falta para, finalmente, mostrar los datos invocando a la vista.
Las URL y las rutas de archivos son todas relativas dentro del bundle, por lo que es fácil importar bundles de terceros en tu aplicación, sencillamente importando la dirección de la carpeta correspondiente.
En cuanto a la vista, se utiliza un motor llamado Twig que por así decirlo, permite imprimir datos en nuestro archivo html más fácilmente de lo que se haría en PHP puro y duro. Ejemplo: el echo se ejecutaría simplemente encerrándolo entre estos operadores: {{ }}.
Instalando Symfony2 en Apache paso a paso
Primero, instalamos el servidor Apache con PHP y todas las dependencias que pudiéramos necesitar. Para ello habría varias formas de hacerlo en función de nuestras necesidades, aunque en este ejemplo instalaremos un servidor LAMP en Ubuntu de forma muy rápida mediante este comando:
sudo apt-get install tasksel lamp-server^ phpmyadmin php5-sqlite php5-intl php-apc
Segundo: descargar Symfony2 desde http://symfony.com/download y descomprimimos en el lugar donde queramos instalar Symfony. En cualquier caso apuntad la ruta porque la usaremos en el siguiente paso.
Tercero, vamos a editar el archivo default para añadir un host virtual.
nano /etc/apache2/sites-available/default
Para ello basta con añadir al principio:
<VirtualHost *:80>
DocumentRoot /tuRuta/Symfony/web
DirectoryIndex app.php
<Directory "/tuRuta/Symfony/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
Cuarto: abrimos el archivo /etc/php5/apache2/php.ini
y editamos las siguientes líneas
data.timezone = Europe/Madrid
short_open_tag=Off
Quinto, reiniciar el servidor apache:
sudo services apache2 restart
Sexto: probamos el sistema en la ruta del navegador http://localhost/config.php
. Tiene que avisar de que no hay errores ni warnings mediante un mensaje sombreado en color verde.
Séptimo y último, dentro de esta pantalla hacemos clic en Configure your symfony y nos pedirá los parámetros de la base de datos. Cuando le des a Siguiente te dirá que no ha podido escribir un archivo. Para ello copia el texto que aparece y lo sobrescribes por lo que haya en el archivo que te indica.
¡Y eso es todo! Para información más detallada sobre Symfony podéis leer el manual oficial en este enlace. Este tutorial es por cortesía de @pedro_cantoria.