Lanzar una excepción desde __autoload() de PHP
La función __autoload es una de las mas útiles en PHP5 (aunque su desempeño es muchas veces cuestionado, ese no es el tema de esta entrada), nos permite definir un método para declarar nuestras clases, es decir, ya no tendremos que tener todos esos include y require, y el sistema automáticamente, al detectar que alguna clase no existe, disparara esta función (En la cual obviamente debemos realizar el include o require), todo bien hasta aqui, sin embargo esta función tiene una pequeña desventaja, no puede lanzar excepciones.
Afortunadamente existen algunas maneras de “cubrir” esta característica, el método más común (y el que yo uso) consiste en crear la clase que está buscando el autoload y después lanzamos la excepción desde esa clase, para esto haremos uso de la función eval y de __callstatic(Para cubrir llamados a métodos estáticos sin instanciar nada), aquí les un pequeño ejemplo:
function __autoload($class_name)
{
if(file_exist($class_name.'.php'))
{
include $class_name.'.php';
}
else
{
eval("
class $class_name
{
function __construct()
{
throw new Exception('La clase $class_name no existe', 1001);
}
static function __callstatic($m, $args)
{
throw new Exception('La clase $class_name no existe', 1001);
}
}
");
}
return;
}Espero sea útil… saludos…




