<?php
/**
 * The VerboseException class adds level, code, file, and line info to a regular exception
 * so that PHP5 errors are as verbose as possible
 * 
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @copyright (c) 2003 amfphp.org
 * @package flashservices
 * @subpackage exception
 * @author Justin Watkins Original Design 
 * @version $Id$
 */
 
class VerboseException extends Exception
{
	public $description;
	public $level;
	public $file;
	public $line;
	public $code;
	public $message;
	
	function VerboseException($string, $level, $file, $line)
	{
		$this->description = $string;
		$this->level = $level;
		$this->code = "AMFPHP_RUNTIME_ERROR";
		$this->file = $file;
		$this->line = $line;
		Exception::__construct($string);
	}
}

function amfErrorHandler($level, $string, $file, $line, $context)
{
	//forget about errors not defined at reported
	$amfphpErrorLevel = $GLOBALS['amfphp']['errorLevel'];

	if( error_reporting() != 0 && ($amfphpErrorLevel | $level) == $amfphpErrorLevel )
	{
		throw new VerboseException($string, $level, $file, $line);
	}
}

set_error_handler("amfErrorHandler");
?>