Derick Rethans schreef:
On Thu, 10 Jul 2008, Gergely Hodicska wrote:
exceptions thrown during autoload are ignored.
And one more thing, this is in the manual:
"Note: Exceptions thrown in __autoload function cannot be caught in the catch
block and results in a fatal error."
I think your explanation makes much more clear what happens, maybe it would
worth to upgrade the manual. While the quoted text suggests that that if throw
an exception I just can't catch it and will bubble up to top level and this
cause the fatal error.
You can actually catch it *in* the autoload method, it just wouldn't
bubble out of it.
the manual could do with that tidbit, maybe also the hack for 'getting the
exception out' of __autoload() ...
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)
regards,
Derick
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php