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

Reply via email to