2011/11/25 Ferenc Kovacs <tyr...@gmail.com>

> 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.
>

Trying to interact with a non-existing class is not an unstable state?

there are two situations:

1. The application is broken, thus the FATAL is appropriate
2. The application tries to work with dynamic class names. If it doesn't
use class_exists() before, its broken and FATAL is appropriate


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