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