Configuración
La configuración se realiza creando ficheros de código PHP en el directorio
cfg/ con código similar a:
$cfg['opcion1'] = 'valor1';
$cfg['opcion2'] = 'valor2';
$cfg['opcion3'] = 'valor3';
// ...
$cfg['opcionN'] = 'valorN';
Siendo opcion1, opcion2, ... claves de configuración y
valor1, valor2, ... sus valores. El nombre del array cfg es necesario.
Mediante este sistema se puede cambiar la configuración predeterminada (como se verá más adelante) o crear configuración propia según las necesidades de nuestro proyecto.
Por ejemplo: definiremos, para una supuesta aplicación, la clave de
configuración defaultEmailAddr:
$cfg['defaultEmailAddr'] = 'webmaster@mydomain.com';
En cualquier punto de nuestra aplicación podemos recuperar esta clave usando la
función \zfx\Config::get(). Ejemplo:
function contactFormSent($text)
{
//...
$to = \zfx\Config::get('defaultEmailAddr');
writeMail($to, $text);
// ...
}
Al ser los ficheros de configuración ficheros de código PHP se puede elaborar esquemas de configuración sofisticados. Por ejemplo:
$cfg['max_usuarios'] = 100;
$cfg['max_grupos'] = $cfg['max_usuarios'] / 2;
if ($cfg['max_grupos'] > 25) $cfg['max_grupos'] = 25;
Configuración predeterminada
Cada módulo de ZWF puede tener un fichero de configuración. Es lo que se
llama la configuración predeterminada del módulo. Estos ficheros no están
en cfg/, sino en el directorio de cada módulo.
El fichero de configuración del módulo core es
base/zfx/core/core-config.php.
El fichero de configuración de cualquier otro módulo siempre se llama
module-config.php y está en su directorio correspondiente. Todos los
ficheros de configuración predeterminados de los módulos considerados activos
son cargados al inicio.
Cambiar la configuración. Orden de carga
Para configurar la aplicación, sobreescribiendo los valores predeterminados, es
necesario colocar en el directorio cfg/ ficheros de configuración con los
nuevos valores. Sin embargo, es necesario conocer el orden de carga y los
nombres de fichero a utilizar para tener un control preciso del sistema.
En cualquier petición, la configuración es cargada en este orden:
-
Se lee la configuración predeterminada del módulo core, o sea,
base/zfx/core/core-config.php. -
Se lee la configuración personalizada por el usuario para el módulo core, si es que existe, o sea:
cfg/core-config.php
En dicho fichero tenemos la oportunidad de activar/desactivar módulos y también de especificar una lista personalizada de ficheros de configuración.
- Se lee secuencialmente la configuración de los módulos activos. Por defecto todos los módulos (dev, data-access) están activos, así que se leerían los siguientes ficheros:
base/zfx/dev/module-config.php
base/zfx/data-access/module-config.php
- Si se especificó la lista personalizada de ficheros de configuración en el paso 2, entonces se cargarán secuencialmente. Podemos aprovechar en este punto para sobreescribir la configuración predeterminada de los módulos que se cargó en el paso 3.
Esquema de configuración habitual
El esquema más sencillo pero completamente funcional es establecer dos ficheros
de configuración: cfg/core-config.php, ya que siempre se intenta cargar este
fichero, y otro (que llamaremos cfg/my-config.php)
para configurar el resto de módulos (por ejemplo el acceso a la base de datos) y
cualquier necesidad de nuestra aplicación.
El fichero cfg/core-config.php debería tener al menos el siguiente contenido:
$cfg['rootUrl'] = 'http://www.miaplicacion.com/';
$cfg['showErrors'] = false;
$cfg['autoLoadConfig'] = array('my-config');
La clave rootUrl
ZWF necesita saber su propia URL. Se especifica en la clave rootUrl.
Por ejemplo, supongamos que hemos instalado ZWF en el directorio
/var/www/test de nuestro servidor y es accesible en la URL
http://www.example.com/test.
Entonces en el fichero cfg/core-config.php introduciremos lo siguiente:
$cfg['rootUrl'] = 'http://www.example.com/test/';
Nótese la barra al final de la URL. Por convenio, todas las URLs que se
configuren en ZWF terminan con la barra /.
También se puede especificar una ruta relativa; los navegadores web la suelen interpretar correctamente:
$cfg['rootUrl'] = '/test/';
Supongamos que tenemos una intranet y queremos acceder por una determinada IP y puerto:
$cfg['rootUrl'] = 'http://192.168.1.23:8080/testapp/';
Nótese la barra siempre al final de la URL.
La clave showErrors
Indica si se deben mostrar, o no, los errores de PHP. A menudo se combina con la detección automática del directorio o dirección del servidor para saber si estamos en producción o no. Ejemplo:
if ($_SERVER['DOCUMENT_ROOT'] == '/var/www/html')
{
// Estamos en producción
$cfg['rootUrl'] = 'http://www.miaplicacion.com/';
$cfg['showErrors'] = false;
}
else if ($_SERVER['DOCUMENT_ROOT'] == '/var/www/test')
{
// Estamos en desarrollo
$cfg['rootUrl'] = 'http://dev.miempresa.com/';
$cfg['showErrors'] = true;
}
La clave autoLoadConfig
Esta clave permite la carga de ficheros adicionales de configuración. En nuestro
ejemplo contiene un único elemento cuyo valor es my-config.