On 11/25/2011 04:21 AM, Sebastian Krebs wrote:
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

There's a third possibility.

3) The application uses a mapped or indexed autoloader and the map is out of date. Rebuilding the map would resolve the error.

So I could see a use for a recovery there; if new NonExistentClass fails, try to rebuild the index and try again before fataling out entirely.

Whether that's too much of an edge case or not, I don't know, but it is a legitimate use case. (Drupal 7 has an indexed autoloader, and we've run into the stale index problem many times. We're trying to migrate most code to PSR-0 for Drupal 8, but even that could use an index for caching/performance reasons.)

--Larry Garfield

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

Reply via email to