Hi Jochem,

not that you really want it, but you could pass the exception as a
static property to fully preserve and throw it later again. Something
like this:

...
sprintf('class %s {
        public static $e;
        public function __construct()
        {
                throw self::$e;
        }
        public function __call($method, array $args)
        {
                throw self::$e;
        }
        public function __callStatic($method, array $args)
        {
                throw self::$e;
        }
}', $class);

$class::$e = $e;
...

Am Donnerstag, den 10.07.2008, 19:14 +0200 schrieb Jochem Maas:
[...]
>       function __autoload($class)
>       {
>               try {
>                       throw new Exception('foo');
>               } catch (Exception $e) {                                
>                   self::handleDebug($e);
>               
>                   if (!class_exists($class, false))
>                       eval(sprintf('
>                      class %1$s
>                      {
>                          public         function __construct()        { throw 
> new AL_Exception("Class %1$s not found: %2$s"); }
>                          public         function __call($m, $a)       { throw 
> new AL_Exception("Class %1$s not found: %2$s"); }
>                          public  static function __callStatic($m, $a) { throw 
> new AL_Exception("Class %1$s not found: %2$s"); }
>                      }', $class, $e->__toString()));                  
>               }
>       }
> 
> which works best when __autoload() isn't triggered by class_exists("Foo", 
> true)

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to