Symfony 1.2, la guía definitiva

3.3. Crear una aplicación web

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.