Inclusión de archivos externos en php, el tedio de muchos proyectos

En las ultimas semanas he estado realizando un framework en php (como para aprender lo que son patrones de diseño y presentar este framework para el curso de “practicas pre profesionales”).

Bien, pero desde hace mucho que programo en php y siempre he caído en la típica linea al momento de incluir archivos externos:

include(“../../algo.php”);
require(“../../includes/class.myDB.inc”);

Y hasta incluso:

if( file_exists( ‘./myVars.php’ ) )
{
require(‘./myVars.php’);
}
elseif( file_exists( ‘../myVars.php’ ) )
{
require(‘../myVars.php’);
}

… y cosas así ¬¬

últimamente un poco aburrido de esto me puse a revisar algunos proyectos y frameworks ya diseñados. Algunas cosas que encontré fueron las siguientes:

WordPress
El ya archiconocido sistema de blogs, que en su archivo de configuración: “wp-config-sample”; trae la siguiente línea de código:

define(‘ABSPATH’, dirname(__FILE__).’/');

Y para incluir archivos realiza los siguiente:

if ( defined(‘ABSPATH’) )
require_once( ABSPATH . ‘wp-config.php’);
else
require_once(‘../wp-config.php’);

Oops, algo parecido a lo que ya hacia.

Zoop Framework
Uno de los mejores framework para php4. Su configuración me agradó mas, en la que en su archivo “config.php”, realiza lo siguiente:

ini_set(‘include_path’,ini_get(‘include_path’).’:’. zoop_dir . ‘/lib/pear:’); // FOR UNIX
// ini_set(‘include_path’,ini_get(‘include_path’).’;’. zoop_dir . ‘/lib/pear:’); // FOR WINDOWS

Haciendo uso de “include_path” se estable una lista de directorios para que php busque archivos. Esto nos evita caer en el tipico “../../../”.

Pero mi idea no era incluir en cada página un archivo “config.php” que tenga el “include_path” ya configurado y estar repetiendo algunos “../../..”.

Para esto y como en todos los proyectos que he trabajo uso como servidor Apache, pues bien configuré el “include_path” en un archivo .htaccess, incluyendo la siguiente línea en este archivo:

#
# PHP variables
# Usa ifModule si deceas truncar la configuracion a una sola version
#
#<IfModule mod_php4.c>
#<IfModule mod_php5.c>
# include_path for windows.
php_value include_path “.;c:\php\includes”

# include_path for linux
#php_value include_path “.:/php/includes”
#</IfModule>

Bueno, esta es la configuración que he elegido por el momento :) . Conocen alguna otra forma de hacerlo sin que sea tan molesto?

Saludos :)

Escribe un comentario

Debes sere Sesión como para publicar un comentario.