Cómo personalizar la Estructura de Directorio por defecto
=========================================================

Una de las grandes ventajas de utilizar un *framework* (o marco de
trabajo) es la estructura consistente que brinda entre los proyectos.
Todos los proyectos comparten los mismo estándares de código, y
también la misma estructura de directorio. Esta estructura permite a
muchos desarrolladores trabajar en el mismo proyecto a la vez. Pero
también mejora la mantenibilidad de la aplicación desarrollada. Cuando
alguien te pide que le des mantenimiento a un proyecto hecho con
Symfony que no desarrollaste inicialmente, ya sabes donde están
guardados los ficheros y puedes empezar a modificarlo de inmediato.

Pero a veces, necesitas contar con la posibilidad de personalizar la
estructura de directorio proveída por Symfony. Tomemos dos ejemplos
muy diferentes.

Primero, digamos que tu proyecto Symfony se hospeda en un entorno
anfitrión compartido (del inglés *shared host*), donde el directorio
web raíz se llama `public_html`. Editanto la clase
`ProjectConfiguration`, es muy facil cambiar el directorio web raíz
por defecto de ser `web` a `public_html` como se muestra a
continuación:

    [php]
    // config/ProjectConfiguration.class.php
    class ProjectConfiguration extends sfProjectConfiguration
    {
      public function setup()
      {
        $this->setWebDir($this->getRootDir().'/../public_html');
      }
    }

Tomemos otro ejemplo. Tu proyecto Symfony es ahora hospedado por una
compañía muy grande con estrictas reglas de seguridad. Ellos no
permiten que tus aplicaciones escriban en disco excepto en algunos
directorios específicos (`/tmp` por ejemplo). Como Symfony solamente
escribe en dos directorios (`cache`, and `log`), resulta muy sencillo
actualizar la clase `ProjectConfiguration` nuevamente para mover estos
directorios hacia el directorio `/tmp`:

    [php]
    // config/ProjectConfiguration.class.php
    class ProjectConfiguration extends sfProjectConfiguration
    {
      public function setup()
      {
        $this->setCacheDir('/tmp/miproyecto/cache');
        $this->setLogDir('/tmp/miproyecto/log');
      }
    }

El método `setCacheDir()` no solamente cambia la constante
`sf_cache_dir` sino también las restantes constantes relacionadas con
caché: `sf_app_base_cache_dir`, `sf_app_cache_dir`,
`sf_template_cache_dir`, `sf_i18n_cache_dir`, `sf_config_cache_dir`,
`sf_test_cache_dir`, y `sf_module_cache_dir`.


Y por último, pero no por ello menos importante, como las clases de
configuración también son utilizadas por la *CLI* (Interfaz de Línea
de Comandos, del inglés *Command Line Interface*) de Symfony, todas
estas personalizaciones también están activas para todas las tareas
que vienen con Symfony y tus tareas (del inglés *tasks*) específicas.

Gracias a las nuevas clases de configuración de Symfony 1.1, la
configurabilidad del *framework* nunca ha sido más facil.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/symfony-devs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to