miniMVC/sys/common.php
2011-12-27 13:24:28 -05:00

107 lines
2.2 KiB
PHP

<?php
/**
* File including common framework-wide functions
*/
/**
* Singleton function
*/
function get_instance($params=array())
{
static $result = null;
if(is_null($result) === TRUE)
{
$result = new miniMVC($params);
}
return $result;
}
/**
* Function to search through the tree to find the necessary file
*
* @param string $file
* @return string
*/
function _find_file($file)
{
}
/**
* Enables pure PHP templating
*
* @param array $data
* @param bool $return
* @return mixed
*/
function load_view($file, $data=array(), $return=FALSE)
{
// Contain the content for buffering
ob_start();
// Extract the data array
extract($data);
//
}
/**
* Custom error handler
*/
function on_error($num, $string, $file, $line, $context)
{
$data = array(
);
}
/**
* Custom exception handler
*/
function on_exception($exception)
{
// these are our templates
$traceline = "#%s %s(%s): %s(%s)";
$msg = "PHP Fatal error: Uncaught exception '%s' with message '%s' in %s:%s<br />Stack trace:<br />%s<br /> thrown in %s on line %s";
// alter your trace as you please, here
$trace = $exception->getTrace();
/*foreach ($trace as $key => $stackPoint) {
// I'm converting arguments to their type
// (prevents passwords from ever getting logged as anything other than 'string')
$trace[$key]['args'] = array_map('gettype', $trace[$key]['args']);
}*/
// build your tracelines
$result = array();
foreach ($trace as $key => $stackPoint) {
$result[] = sprintf(
$traceline,
$key,
$stackPoint['file'],
$stackPoint['line'],
$stackPoint['function'],
implode(', ', $stackPoint['args'])
);
}
// trace always ends with {main}
$result[] = '#' . ++$key . ' {main}';
// write tracelines into main template
$msg = sprintf(
$msg,
get_class($exception),
$exception->getMessage(),
$exception->getFile(),
$exception->getLine(),
implode("<br />", $result),
$exception->getFile(),
$exception->getLine()
);
echo $msg;
}
set_exception_handler('on_exception');