Foros del Web » Programando para Internet » PHP »

Patrón para Bootstrap o Init de una aplicación en PHP

Estas en el tema de Patrón para Bootstrap o Init de una aplicación en PHP en el foro de PHP en Foros del Web. Hola gente; este es mi primer mensaje en los foros de Maestrosdelweb. Veréis, soy programador de PHP y en la mayor parte de las aplicaciones ...
  #1 (permalink)  
Antiguo 01/04/2008, 08:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 4
Antigüedad: 16 años, 7 meses
Puntos: 0
Pregunta Patrón para Bootstrap o Init de una aplicación en PHP

Hola gente; este es mi primer mensaje en los foros de Maestrosdelweb. Veréis, soy programador de PHP y en la mayor parte de las aplicaciones que creo para mi empresa suelo utilizar una serie de rutinas para la inicialización de la aplicación, es decir, tengo preparadas una serie de rutinas para cargar el archivos de configuración, establecer rutas, parámetros varios.

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/'
¿Cómo le véis? Estoy abierto a cualquier sugerencia/crítica/obsrvación/pregunta...

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'"); 
Por supuesto, el archivo "init.inc.php" es llamado desde todas las páginas de la aplicación. Alguno de vosotros se preguntará por qué no incluyo el inicio de sesión (session_start) en el init. Necesito hacerlo fuera porque en algunos casos suelo pasar objetos en variables de sesión y si los archivos que contienen la definición de las clases de dichos objetos no están incluidos antes de iniciar la sesión, surgen errores. Que yo sepa no podemos tener un objeto cargado en una variable de sesión si previamente no se ha hecho un "include" del archivo que contiene la clase.

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!
  #2 (permalink)  
Antiguo 01/04/2008, 09:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Patrón para Bootstrap o Init de una aplicación en PHP

Es una buena idea centralizar la carga de variables, y configuración en un archivo, así tienes un punto de entrada común donde verificar todo. Aunque si lo que quieres es actualizar y realmente ocupar bien lo que es el patrón Bootstrap te recomendaría le echaras una leída a lo que es MVC (Model/View/Controller) ya que ocupas casi 100% programación orientada a objetos y te brinda muchas cualidades como un Bootstrap File, Autocarga de clases etc.

Saludos.
  #3 (permalink)  
Antiguo 02/04/2008, 00:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 4
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Patrón para Bootstrap o Init de una aplicación en PHP

GRacias GatorV; ya conocía el patrón MVC pero, por el momento, no lo veo del todo adecuado para mis proyectos y mi forma de trabajar. En cualquier caso gracias por tu aportación.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:14.