Pues aquí esta la respuesta: "El cambio es necesario cuando es a mejor".
En este caso la curva de aprendizaje de cosas nuevas en un lenguaje de programación dado, depende mucho de la sintaxis y estructura del lenguaje en cuestión, pero centrándonos en PHP y en el caso que nos ocupa, podremos observar que la curva de aprendizaje es relativamente corta en el tiempo y alta en conocimientos adquiridos. Así que pongámonos manos a la obra.
Autocarga de Classes no definidas a través de include o require.
A través de la función:
spl_autoload_register($funcion);
Conseguiremos decirle a PHP cual es la forma de tratar de cargar nuevas clases que no tengamos incluidas explícitamente con include, require o sus derivados.
Aquí dejo una forma genérica de realizar esta gestión de classes:
/*
* defined function responsible for loading class,
* replacing the old __ autoload.
* ROOT is constant of the path root of the system
*/
spl_autoload_extensions('.class.php');
spl_autoload_register('loadClasses');
function loadClasses($className)
{
if( file_exists(ROOT_DIR.DS.'controller/'.$className.'.class.php' ) ){
set_include_path(ROOT_DIR.DS.'controller'.DS);
spl_autoload($className);
}
elseif( file_exists('model/'.$className.'.class.php' ) ){
set_include_path(ROOT_DIR.DS.'model'.DS);
spl_autoload($className);
}elseif( file_exists('view/'.$className.'.class.php' ) ){
set_include_path(ROOT_DIR.DS.'view'.DS);
spl_autoload($className );
}else
{
set_include_path(ROOT_DIR.DS.'lib'.DS);
spl_autoload($className );
}
}
Básicamente, este snipplet de código determina una función que busca y comprueba si existe un fichero determinado en una ruta usando unas condiciones para mirar en varios directorios.
Previamente define la extensión por defecto para las clases como ".class.php"
Gracias a este pequeño código cargado practicamente al principio de vuestra estructura, conseguiréis instanciar una clase sin necesidad de incluirla con la limpieza de código que eso supone y la versatilidad de no tener que incluir el código de la case en distintos sitios.
Disfrutad!
No hay comentarios:
Publicar un comentario