Marcus Boerger wrote: > Hello Gregory, > > I don't recall any particular thread but Andi once explained why a few > things are instable when exceptions are pending. Some of that is no longer > the case so maybe it is time to reinvestigate the whole issue of pending > exceptions. But maybe that would result in an exception stack like in Java > and I am not sure whether I would not simply favor our current bahavior.
Hi, I actually don't mind the current behavior, although it would be nice if instead of an E_ERROR it simply displayed the exception as if it were uncaught (ignoring the exception handler - just shunt and display as an Exception would). Even this is not a big issue, I've been using die(new Exception(...)) and it does the same thing. What I was wondering is to understand __autoload()s internals a little better. Your message plus my investigation of the source leads me to ask a pre-patch question: I'd like to avoid my little fatal error trick if the user simply called class_exists('Classname', true) and same for interface_exists(). If I provide a simple patch that would introduce a new HashTable of classnames into EG() called EG(in_class_exists), and a new userspace function in_class_exists() that returns true if __autoload() was called by class_exists(), would that be an acceptable addition into PHP 5.3? This way, my autoload handler could simply return if the user is querying the existence of a class, and die pre-emptively with the exception I want in other cases where an E_ERROR would result. This feature would be extremely useful for PEAR2's implementation of autoload. Currently, I check the stack frame of the exception for class_exists() prior to die()ing with it, which is risky at best, and a performance hog. Thanks, Greg -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php