Las secciones anteriores explican la filosofía en la que se basa la creación y procesamiento de páginas en Symfony2. También se ha mencionado cómo están estructurados y organizados los proyectos Symfony2. Al final de esta sección, sabrás dónde encontrar y colocar diferentes tipos de archivos y por qué.
Aunque se puede cambiar, por defecto todas las aplicaciones Symfony tienen la misma estructura de directorios sencilla (y recomendada):
app/
: contiene la configuración de la aplicación.src/
: aquí se encuentra todo el código PHP de la aplicación.vendor/
: por convención aquí se guardan todas las librerías creadas por terceros.web/
: este es el directorio web raíz y contiene todos los archivos que se pueden acceder públicamente.
4.3.1. El directorio web
El directorio web raíz es el lugar donde se encuentran todos los archivos públicos y estáticos tales como imágenes, hojas de estilo y archivos JavaScript. También es el lugar donde se definen todos los controladores frontales, como por ejemplo el siguiente:
// web/app.php
require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel->handle(Request::createFromGlobals())->send();
El archivo del controlador frontal (app.php
en este ejemplo) es el archivo PHP que realmente se ejecuta cuando utilizas una aplicación Symfony2 y su trabajo consiste en arrancar la aplicación utilizando una clase del núcleo (AppKernel
).
Truco Tener un controlador frontal significa que se utilizan URL diferentes y más flexibles que las de una aplicación PHP típica. Cuando se dispone de un controlador frontal, las URL se formatean de la siguiente manera:
http://localhost/app.php/hello/Ryan
El controlador frontal, app.php
, se ejecuta y la URL interna: /hello/Ryan
se dirige internamente según la configuración de enrutamiento.
Si además utilizas el módulo mod_rewrite
de Apache, puedes forzar la ejecución del archivo app.php
sin necesidad de incluirlo en la URL, por lo que así las URL son todavía más limpias:
http://localhost/hello/Ryan
Aunque los controladores frontales son esenciales para servir cada petición, rara vez los tendrás que modificar o incluso pensar en ellos. Los mencionaremos brevemente de nuevo en la sección dedicada a los entornos de ejecución.
4.3.2. El directorio de la aplicación (app
)
Como vimos en el controlador frontal, la clase AppKernel
es el punto de entrada principal de la aplicación y es la responsable de toda la configuración. Como tal, se almacena en el directorio app/
.
Esta clase debe implementar dos métodos que definen todo lo que Symfony necesita saber acerca de tu aplicación. Ni siquiera tienes que preocuparte de estos métodos durante el arranque — Symfony los rellena por ti con parámetros predeterminados.
registerBundles()
: devuelve un array con todos los bundles necesarios para ejecutar la aplicación.registerContainerConfiguration()
: carga el archivo de configuración de recursos de la aplicación (consulta la sección Configurando la aplicación).
Durante el desarrollo de una aplicación, normalmente el directorio app/
solo los utilizas para modificar la configuración y los archivos de enrutamiento en el directorio app/config/
(consulta la sección Configurando la aplicación).
Este directorio también contiene el directorio caché de la aplicación (app/cache
), un directorio de logs (app/logs
) y un directorio para archivos de recursos globales, tales como plantillas (app/Resources
). Aprenderás más sobre cada uno de estos directorios en capítulos posteriores.
4.3.3. El directorio fuente (src
)
En pocas palabras, el directorio src/
contiene todo el código real (código PHP, plantillas, archivos de configuración, estilos, etc.) que pertenece a tu aplicación.
De hecho, al programar una aplicación Symfony, la mayor parte de tu trabajo se llevará a cabo dentro de uno o más bundles creados en este directorio.
Pero, ¿qué es exactamente un bundle?