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

Reply via email to