The problem with fatal, that you have no way (by the standard means, but you can somehow manage it through the usage of output buffers or register_shutdown_function, but thats ugly, and can change in the future) to intercept and gracefully terminate your application, which is an often needed feature. AFAIK E_FATAL should be only used where the engine is left in an unstable state, which isn't really true here. So I think that E_RECOVERABLE_ERROR would be more appropriate here, and in general we use E_ERROR many places where E_RECOVERABLE_ERROR would be more suitable, but thats another topic.
For clarification: I'm talking about the E_FATAL which currently will be called if none of the registered autoloaders were able to load the requested class. On Fri, Nov 25, 2011 at 9:56 AM, Sebastian Krebs <krebs....@googlemail.com>wrote: > Hi, > > Just to throw my 2 cent in: Im with Micheal. An application, that tries to > access a class, that doesn't exists, is broken and a FATAL is valid. This > application doesn't need try-catch, but a bugfix (and if it is already > released: A better testing management). > On the other side an application, that makes use of dynamic class names > should make use of class_exists() in any case. An exception after calling > class_exists() is just bad, but the classloader cannot distinguish between > the reasons, why it is called. > > 2011/11/25 Christian Kaps <christian.k...@mohiva.com> > > > Am 25.11.2011 08:24, schrieb Michael Wallner: > > > > On Thu, 24 Nov 2011 23:28:35 +0100, Christian Kaps wrote: > >> > >> > >>> https://wiki.php.net/rfc/**autoloader_error_handling< > https://wiki.php.net/rfc/autoloader_error_handling> > >>> > >>> > >> Throwing an exception or fatal error in an autoloader > >> absolutely does not make any sense in my eyes. > >> Projects doing this should step back and think a > >> minute about what they dare. > >> > >> Mike > >> > > > > Hi, > > > > how would you bring your application in a consistent state after a class > > couldn't be loaded. I do this by adding a try/catch block around my code. > > > > try { > > new Application(); > > } catch (Exception) { > > // collect data > > // send mail > > // redirect to maintenance page > > } > > > > An other question is, if the autoloader work silent and I write: > > > > new NotExistingClass(); > > > > I think in this case the engine will also trigger a fatal error. So in my > > eyes it is regardless of whether it trigger a fatal error in the > autoloader > > or the autoloader works silent. Both cases ends in a fatal error. Or am i > > wrong here? > > > > Christian > > > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > -- Ferenc Kovács @Tyr43l - http://tyrael.hu