Como se vio en el Capítulo 2, Symfony agrupa las aplicaciones relacionadas en proyectos. Todas las aplicaciones de un proyecto comparten la misma base de datos. Por tanto, para crear una aplicación web en primer lugar se debe crear un proyecto.
3.3.1. 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.
Si has utilizado la instalación con PEAR, ejecuta los siguientes comandos:
> mkdir ~/miproyecto
> cd ~/miproyecto
> symfony generate:project miproyecto
Si has instalado Symfony mediante SVN, puedes crear un proyecto con los siguientes comandos:
> mkdir ~/miproyecto
> cd ~/miproyecto
> php /ruta/hasta/data/bin/symfony generate:project miproyecto
La estructura de directorios creada por Symfony se muestra a continuación:
apps/ cache/ config/ data/ doc/ lib/ log/ plugins/ test/ web/
Truco La tarea generate:project
añade un script llamado symfony
en el directorio raíz del proyecto. Este script es idéntico al comando symfony
que instala PEAR, por lo que se puede utilizar la instrucción php symfony
en vez del comando symfony
cuando no se dispone de las utilidades de la línea de comandos (lo que sucede cuando se instala Symfony mediante Subversion).
3.3.2. Crear la aplicación
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 generate:app
, al que se le tiene que pasar como argumento el nombre de la nueva aplicación:
> php symfony generate:app frontend
El comando anterior crea un directorio llamado frontend/
dentro del directorio apps/
que se encuentra en la raíz del proyecto. Por defecto se crea una configuración básica de la aplicación y una serie de directorios:
apps/ frontend/ config/ i18n/ lib/ modules/ templates/
En el directorio web
del proyecto también se crean algunos archivos PHP correspondientes a los controladores frontales de cada uno de los entornos de ejecución de la aplicación:
web/ index.php frontend_dev.php
El archivo index.php
es el controlador frontal de producción de la nueva aplicación. Como se trata de la primera aplicación, Symfony crea un archivo llamado index.php
en vez de frontend.php
(si después se crea una nueva aplicación llamada por ejemplo backend
, el controlador frontal del entorno de producción que se crea se llamará backend.php
). Para ejecutar la aplicación en el entorno de desarrollo, se debe ejecutar el controlador frontal llamado frontend_dev.php
. Por razones de seguridad el controlador frontal de desarrollo sólo se puede ejecutar por defecto desde localhost
. El Capítulo 5 explica en detalle los distintos entornos de ejecución.
El comando symfony
siempre se ejecuta en el directorio raíz del proyecto (miproyecto/
en los ejemplos anteriores) porque todas las tareas que ejecuta este comando dependen del proyecto.