blob: 4ca205779316be4c975cf3da4da6437c557cc6ef [file]
eZ Components - Execution
~~~~~~~~~~~~~~~~~~~~~~~~~
.. contents:: Table of Contents
Introduction
============
When there is a problem with your web application, you do not want your
visitors to see "fatal error" messages. Instead you want to be able to show
them a more friendly page telling them what might be wrong or what they should
do when they encounter such an error.
Fatal errors and uncaught exceptions in PHP abort your script, but with this
component you can add hooks to the shutdown system of PHP. This allows you to
show more user-friendly error messages.
Class overview
==============
The Execution packages provides the ezcExecution class. This class provides the
full interface to catch "fatal" errors. The component also
provides the ezcExecutionErrorHandler interface for implementation by error
handlers. A basic error handler is supplied through the
ezcExecutionBasicErrorHandler class.
Usage
=====
Start your application by calling ezcExecution::init( $className ) to
initialize the ezcExecution class. $className is the name of the
class that implements your handler. In our first example, we will use the
default handler ezcExecutionBasicErrorHandler. Calling the init()
method sets up the environment and registers the necessary handlers with PHP.
Before your application quits with exit() or die(), you need to signal to the
ezcExecution environment that your application exited properly. Without this
signal, the handlers assume that your application has ended unsuspectedly. The
onError() method of the class you specified with the init() method will thus be
called.
This is a basic example:
.. include:: tutorial_example_01.php
:literal:
In line 4, we initialize the environment and in line 6, we signal to the
environment that we have a clean exit. Otherwise, the script
would have displayed the following message: ::
This application stopped in an unclean way. Please contact the maintainer
of this system and explain him that the system doesn't work properly at the
moment.
Have a nice day!
This is simply the default message and can be customized. To do so, create a new
class that implements the ezcExecutionErrorHandler interface. You will only
have to implement one method: onError(). In the next example, we create such a
class and implement a custom message:
.. include:: tutorial_example_02.php
:literal:
In lines 4-20, we declare our handler class *MyExecutionHandler*, which
implements the ezcExecutionErrorHandler interface. Using the onError method, on
line 8 we check whether the error was caused by an uncaught
exception. In that case, we insert the exception's message into the $message
variable. Otherwise, we assign a static value to $message. $message is then
displayed in lines 17 and 18.
When you run the above script, the following warning is displayed: ::
This application did not succesfully finish its request. The reason was:
Throwing an exception that will not be caught.
This is due to line 24, where we throw an uncaught exception. If lines 24 and
26 are commented out, the result will instead be as follows: ::
This application did not succesfully finish its request. The reason was:
Unclean Exit - ezcExecution::cleanExit() was not called.
More information
================
For more information, see the ezcExecution API documentation.
..
Local Variables:
mode: rst
fill-column: 79
End:
vim: et syn=rst tw=79