Re: link to exceptions in autoload thread?

From: Date: Wed, 03 Oct 2007 20:27:45 +0000
Subject: Re: link to exceptions in autoload thread?
References: 1 2 3 4 5 6  Groups: php.internals 
Request: Send a blank email to internals+get-32614@lists.php.net to get a copy of this message
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

« previous php.internals (#32614) next »