Ending the Request

Some pages do not end by reaching their last line: a form handler redirects, a guard refuses, an error stops everything. PAD has a tag or a function for each - and none of them can be demonstrated live on this page, because each one would end the request this page is. The examples are therefore shown, not run.

Redirecting

From a page's PHP, padRedirect() sends the browser to another page and ends the request cleanly - session closed, buffers flushed, headers sent:

padRedirect ( 'tickets/index' );           // to a page of this application
padRedirect ( 'tickets/index', $vars );    // with variables carried along

Never use PHP's exit or die, and not header() either: they end PHP mid-request, skipping everything PAD still had to do. The same goes for a restart - padRestart('page') renders another page in place of this one without a round trip to the browser.

The tags that end a request

tag what it does
{exit} ends the request where it stands - nothing is shipped, not even the output so far
{error 'message'} reports an error through the configured error action, which normally ends the request with a 500
{exception 'message'} throws a real PHP exception, for testing the nets that catch one
{dump} stops the request on a dump of the engine state, the heavy debugging tool

What happens on an error

Any error - a tag that misses, a PHP warning, a thrown exception - goes to the configured $padErrorAction: pad renders an error page and ends the request, as stop, exit and boot end it too - with HTTP 500, and a command-line run exits with status 1, so a script can test the outcome without reading the output. log records the error in the log and ignore drops it - with both the page carries on, dump writes a dump of the engine state under DATA and carries on - those answer 200 - and php leaves it to PHP's own handling: a warning is printed in the page, a PAD error is an uncaught exception.

A demand option turns an empty tag into an error: a page that is meaningless without its data can say so - {users demand}...{/users} - instead of rendering a hole.