Archive for April 2007
Custom Exception Handlers
In the same way that set_error_handler( ) sets a handler for uncaught errors, set_exception_handler( ) sets a handler for uncaught exceptions. As exceptions are more powerful than errors, your exception-handling function need only take one parameter: an exception object. From that, you can glean the usual information such as message, line number, etc. Apart from the parameters passed, these work the same as set_error_handler( ). E.g.:
<?php
function handleException($exception)
{
echo "Caught exception: {$exception->getMessage()}";
}
set_exception_handler("handleException");
throw(new Exception('Testing custom exception handler'));
?>
Having a custom exception handler is a smart move wherever you’re using exceptions, because it essentially captures all exceptions that would otherwise have been uncaught, and gives you one last chance to take some action before the script potentially terminates.
See also: Extending Exceptions
Extending Exceptions
So far, one of the problems with the exception system is all of the exceptions are instances of the same class that only differ by the message they display. This gives us little chance to distinguish between different errors, especially if we localize the error messages into different languages.
Read the rest of this entry »
URI Parameters to Array
Zend_Controller_Router_Route_Module uses a very simple mapping to determine the name of the controller and the name of the action within that controller:
http://framework.zend.com/controller/action/
Notice above that the first segment is always the name of the controller and the second segment is always the name of the action. Optionally, parameters may be defined in the URI that will be passed to the controller. These take the form of key/value pairs:
http://framework.zend.com/controller/action/key1/value1/
Now, lets convert those parameters defined in the URI to an array. Why? Errr, just for fun :)
Coding Standards
The structure of a software system exists not only at the macro level of general architecture, but also at the micro level of the actual code. As systems grow larger and more complex, having a defined coding standard starts to pay dividends. Every programmer has his favourite style of coding, whether related to indentation, naming, brace styles, or new lines, but there’s a very simple rule to bear in mind when talking about coding standards on a project. Read the rest of this entry »