Johannes Schlüter wrote:
> Greg,
> 
> On Wed, 2007-10-03 at 15:07 -0500, Greg Beaver wrote:
>> Now what?  The error message doesn't tell Joe where to find PEAR2::Foo,
>> or any other useful information on how to find it, just that it can't be
>> found.  PEAR2, however, knows exactly where it should be found, and has
>> some idea of why it isn't there (package not installed).  In addition,
>> there is no stack trace that can be used to debug the call chain that
>> led to the problem if PEAR2::Foo *is* installed, and Joe reports the
>> problem to the maintainers of PEAR2::Blah.
>>
>> Without my die(new Exception()), there is no way to pass this known
>> information back out of PEAR2_Autoload to Joe, and it makes both
>> development and debugging much more difficult, and unnecessarily so.
> 
> function __autoload($a) {
>    $b = debug_backtrace();
>    if ($bt[1]["function"] == "class_exists") {
>        echo "in get_class";
>    }
> }
> 
> should work quite well without obscure engine hacks - or am I missing
> something?

I do that now, but it is a severe performance hog as well as being
fugly.  Also, if you use spl_autoload_register, the frame is $bt[2].  In
other words, it's possible, but still an ugly, unnecessary hack with
lots of potential pitfalls caused by the inability to customize an error
message when a class doesn't exist.

Greg

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to