Mi duda está en que no sé si lo que hago es lo más correcto o si por el contrario hay métodos más eficientes o al menos puedo mejorar algunas partes de estas rutinas de inicialización.
Os paso a explicar de forma lo más escueta posible lo que suelo hacer:
El proceso de inicialización se basa en dos archivos básicamente:
- config.inc.php
- init.inc.php
El primero de ellos contiene los típicos parámetros de configuración de la aplicación. Un ejemplo de config.inc.php puede ser el siguiente:
Código PHP:
/**
* SERVIDOR DE BASES DE DATOS
*/
$config['tipoBDD'] = 'mysql';
$config['hostBDD'] = 'localhost';
$config['nombreBDD'] = 'mibdd';
$config['usuarioBDD'] = 'yomismo';
$config['claveBDD'] = 'miclave';
/**
* NIVEL DE REPORTE DE ERRORES
*/
$config['nivelErrores'] = E_ALL ^ E_NOTICE;
/**
* OTROS
*/
$config['idiomaPorDefecto'] = 'es';
$config['tituloWeb'] = 'Mi SuperAplicación';
$config['rutaBase'] = $_SERVER['DOCUMENT_ROOT'] . '/';
$config['webURI'] = 'http://' . $_SERVER['SERVER_NAME'] . '/';
$config['rutaArchivos'] = $config['rutaBase'] . 'almacen/';
$config['rutaLog'] = $config['rutaBase'] . 'log/';
Por su parte el archivo "init.inc.php" es el que se encarga de establecer las rutas por defecto de la aplicación, cargar el archivo config, establecer el nivel de errores indicado en config, cargar clases básicas, iniciar el buffer de salida, etc. Aquí os dejo un ejemplo:
Código PHP:
/**
* CARGA DE RUTAS
*/
define('RUTA_BASE', $_SERVER['DOCUMENT_ROOT'] . '/');
define('RUTA_CLASES_BASE', RUTA_BASE . 'lib/class/');
define('RUTA_INCLUDES_BASE', RUTA_BASE . 'lib/inc/');
set_include_path(
get_include_path() . PATH_SEPARATOR
. RUTA_CLASES_BASE . PATH_SEPARATOR
. RUTA_INCLUDES_BASE . PATH_SEPARATOR
);
/**
* ARCHIVO DE CONFIGURACION
*/
require_once('config.inc.php');
/**
* NIVEL DE REPORTE DE ERRORES
*/
error_reporting($config['nivelErrores']);
/**
* CARGA DE CLASES DE SESION
* Necesarias previa inicializacion de la sesion porque van a formar parte de vbles de sesion
*/
require_once('apli/UsuarioSistema.class.php');
/**
* CARGA DE CLASES BASICAS
* Clases de uso general a lo largo de la aplicacion
*/
require_once('LDFW-1.0/LDFW_DBException.class.php');
require_once('LDFW-1.0/LDFW_Cadena.class.php');
require_once('LDFW-1.0/LDFW_Debug.class.php');
/**
* CONTROL DE EXCEPCIONES NO CONTROLADAS
*/
function controlExcepcionNoControlada($e){
//Descartamos el contenido actual de la pagina
ob_end_clean();
//Incluimos la pagina de error que podra hacer uso de $e
require_once("error.inc.php");
}
set_exception_handler('controlExcepcionNoControlada');
/**
* INICIO DE CONTROL DE BUFFER DE SALIDA
*/
ob_start();
/**
* CONEXION CON BASE DE DATOS
*/
require_once('DB.php');
$tipoBDD = $config['tipoBDD'];
$hostBDD = $config['hostBDD'];
$nombreBDD = $config['nombreBDD'];
$usuarioBDD = $config['usuarioBDD'];
$claveBDD = $config['claveBDD'];
$dsn = "$tipoBDD://$usuarioBDD:$claveBDD@$hostBDD/$nombreBDD";
$DB = DB::connect($dsn);
if(PEAR::isError($DB)){
die("Error conectando a la base de datos: ".$DB->getMessage());
}
$DB->query("SET NAMES 'utf8'");
Os agradecería enormemente que me contarais qué os parece este método y los pasos que sigo en el mismo.
Un saludo y gracias!