Hola
Hice la siguiente clase AutoLoad
Código PHP:
class AutoLoad {
public function __construct() {
}
public static function registerAutoload() {
spl_autoload_register(array('AutoLoad', 'autoload'));
}
public static function autoload( $class_name ) {
if ( preg_match('/.controller.php/i', $class_name) ) {
$path = CONTROLLER_PATH;
$type = 'controller';
} elseif ( preg_match('/.model.php/i', $class_name) ) {
$path = MODEL_PATH;
$type = 'model';
} else {
$path = CORE_PATH;
$type = 'class';
}
$file = $path . $class_name . '.' . $type . '.php';
if ( file_exists($file) ) {
require_once $file;
} else {
throw new Exception('La clase ' . $class_name . ' no existe');
}
}
}
Funciona bien, el problema esta cuando dentro de una clase quiero instanciar otra, por ej. desde una clase controladora instaciar un modelo, ahi no funciona el autoload.
Cual seria la forma mas facil de solucionar esto?
Una solucion que se me ocurrio es a cada clase controller, extenderla a una clase GenericController por ej y que en el consturctor de esta se realice el autoload