Output Buffering With PHP - Melting Down (
Page 4 of 9 )
Of course, there aren't just two functions available to you - the output control API has a few other cards up its sleeve as well. Consider the following example:
<?php
// run at script start
function page_init()
{
// start buffering the output
ob_start();
}
// run at script end
function page_exit()
{
global $error;
// if an error occurred
// erase all output generated so far
// and display an error message
if ($error == 1)
{
ob_end_clean();
print_error_template();
}
// no errors?
// display output
else
{
ob_end_flush();
}
}
// print error page
function print_error_template()
{
echo "<html><head><basefont face=Arial></head><body>An error
occurred. Total system meltdown now in progress.</body></html>"; }
page_init();
// script code goes here
echo "This script is humming like a well-oiled machine";
// if an error occurs
// set the global $error variable to 1
// uncomment the next line to see what happens if no error occurs $error
= 1;
page_exit();
?>
In this case, depending on whether or not a particular error condition is met, PHP will either display the contents of the buffer, or wipe it clean via the ob_end_clean() function.