270 lines
7.1 KiB
PHP
270 lines
7.1 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* A loader class for the renderers.
|
||
|
*
|
||
|
* @package PHP_Debug
|
||
|
* @category PHP
|
||
|
* @author Loic Vernet <qrf_coil at yahoo dot fr>
|
||
|
* @since V2.0.0 - 10 Apr 2006
|
||
|
*
|
||
|
* @package PHP_Debug
|
||
|
* @filesource
|
||
|
* @version CVS: $Id: DebugLine.php,v 1.1 2008/05/02 14:26:37 c0il Exp $
|
||
|
*/
|
||
|
|
||
|
class PHP_DebugLine
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* PHP_DEBUGLINE Types
|
||
|
*
|
||
|
* - TYPE_ANY : All available types (for search mode)
|
||
|
* - TYPE_STD : Standart debug
|
||
|
* - TYPE_QUERY : Query debug
|
||
|
* - TYPE_REL : Database related debug
|
||
|
* - TYPE_ENV : Environment debug ($GLOBALS...)
|
||
|
* - TYPE_APPERROR : Custom application error
|
||
|
* - TYPE_CREDITS : Credits information
|
||
|
* - TYPE_SEARCH : Search mode in debug
|
||
|
* - TYPE_DUMP : Dump any kind of variable
|
||
|
* - TYPE_PROCESSPERF : Performance analysys
|
||
|
* - TYPE_TEMPLATES : Included templates of the calling script
|
||
|
* - TYPE_PAGEACTION : Store main page action
|
||
|
* - TYPE_SQLPARSE : SQL Parse error
|
||
|
* - TYPE_WATCH : A variable to watch
|
||
|
* - TYPE_PHPERROR : A debug generated by the custom error handler
|
||
|
*
|
||
|
* @category DebugLine
|
||
|
*/
|
||
|
|
||
|
const TYPE_ANY = 0;
|
||
|
const TYPE_STD = 1;
|
||
|
const TYPE_QUERY = 2;
|
||
|
const TYPE_QUERYREL = 3;
|
||
|
const TYPE_ENV = 4;
|
||
|
const TYPE_APPERROR = 5;
|
||
|
const TYPE_CREDITS = 6;
|
||
|
const TYPE_SEARCH = 7;
|
||
|
const TYPE_DUMP = 8;
|
||
|
const TYPE_PROCESSPERF = 9;
|
||
|
const TYPE_TEMPLATES = 10;
|
||
|
const TYPE_PAGEACTION = 11;
|
||
|
const TYPE_SQLPARSE = 12;
|
||
|
const TYPE_WATCH = 13;
|
||
|
const TYPE_PHPERROR = 14;
|
||
|
const TYPE_DEFAULT = self::TYPE_STD;
|
||
|
|
||
|
/**
|
||
|
* PHP_DEBUGLINE info levels
|
||
|
*/
|
||
|
const INFO_LEVEL = 1;
|
||
|
const WARNING_LEVEL = 2;
|
||
|
const ERROR_LEVEL = 3;
|
||
|
|
||
|
/**
|
||
|
* Labels for debugline types
|
||
|
*/
|
||
|
public static $debugLineLabels = array(
|
||
|
self::TYPE_ANY => 'ALL',
|
||
|
self::TYPE_STD => 'Standart',
|
||
|
self::TYPE_QUERY => 'Query',
|
||
|
self::TYPE_QUERYREL => 'Database related',
|
||
|
self::TYPE_ENV => 'Environment',
|
||
|
self::TYPE_APPERROR => 'Application error',
|
||
|
self::TYPE_CREDITS => 'Credits',
|
||
|
self::TYPE_SEARCH => 'Search',
|
||
|
self::TYPE_DUMP => 'Variable dump',
|
||
|
self::TYPE_PROCESSPERF => 'Performance analysis',
|
||
|
self::TYPE_TEMPLATES => 'Included files',
|
||
|
self::TYPE_PAGEACTION => 'Page main action',
|
||
|
self::TYPE_SQLPARSE => 'SQL parse error',
|
||
|
self::TYPE_WATCH => 'Watch',
|
||
|
self::TYPE_PHPERROR => 'PHP error'
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Properties that stores the non formatted debug information
|
||
|
*
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $info;
|
||
|
|
||
|
/**
|
||
|
* Type of the debug information
|
||
|
*
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
* @see Debug_Line constants
|
||
|
* @var integer
|
||
|
*/
|
||
|
protected $type;
|
||
|
|
||
|
/**
|
||
|
* File of debug info
|
||
|
*
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
* @var integer
|
||
|
*/
|
||
|
protected $file;
|
||
|
|
||
|
/**
|
||
|
* Line of debug info
|
||
|
*
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
* @var integer
|
||
|
*/
|
||
|
protected $line;
|
||
|
|
||
|
/**
|
||
|
* Class from witch the debug was called
|
||
|
*
|
||
|
* @since V2.0.0 - 13 apr 2006
|
||
|
* @var integer
|
||
|
*/
|
||
|
protected $class;
|
||
|
|
||
|
/**
|
||
|
* Function from wich the debug was called
|
||
|
*
|
||
|
* @var integer
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
*/
|
||
|
protected $function;
|
||
|
|
||
|
/**
|
||
|
* Exection time for debug info
|
||
|
*
|
||
|
* @var float
|
||
|
* @see stopTimer()
|
||
|
* @since V2.0.0 - 16 apr 2006
|
||
|
*/
|
||
|
protected $startTime;
|
||
|
|
||
|
/**
|
||
|
* Exection end time for debug info
|
||
|
*
|
||
|
* @see PHP_Debug::stopTimer(), setEndTime()
|
||
|
* @since V2.0.0 - 16 apr 2006
|
||
|
* @var float
|
||
|
*/
|
||
|
protected $endTime;
|
||
|
|
||
|
/**
|
||
|
* PHP_DebugLine class constructor
|
||
|
*
|
||
|
* Here it is set :
|
||
|
* - the start time of the debug info
|
||
|
* - the traceback information
|
||
|
*
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
* @see PHP_Debug::add()
|
||
|
*/
|
||
|
public function __construct($info, $type = self::TYPE_DEFAULT)
|
||
|
{
|
||
|
$this->setStartTime();
|
||
|
$this->info = $info;
|
||
|
$this->type = $type;
|
||
|
$this->setTraceback();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Fills properties of debug line with backtrace informations
|
||
|
*
|
||
|
* @since V2.0.0 - 15 apr 2006
|
||
|
*/
|
||
|
protected function setTraceback()
|
||
|
{
|
||
|
$callStack = debug_backtrace();
|
||
|
$idx = 0;
|
||
|
|
||
|
// Get max id of 'add' debug functions
|
||
|
foreach($callStack as $lkey => $lvalue) {
|
||
|
if (in_array($callStack[$lkey]['function'],
|
||
|
PHP_Debug::$excludedBackTraceFunctions) == true
|
||
|
) {
|
||
|
$idx = $lkey;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$this->file = !empty($callStack[$idx] ['file'])
|
||
|
? $callStack[$idx]['file'] : '';
|
||
|
$this->line = !empty($callStack[$idx] ['line'])
|
||
|
? $callStack[$idx]['line'] : '';
|
||
|
$this->function = !empty($callStack[$idx+1]['function'])
|
||
|
? $callStack[$idx+1]['function'] : '';
|
||
|
$this->class = !empty($callStack[$idx+1]['class'])
|
||
|
? $callStack[$idx+1]['class'] : '';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Getter of all properties of Debug_Line object
|
||
|
*
|
||
|
* @return array Array containg all the properties of the debugline
|
||
|
* @since V2.0.0 - 21 apr 2006
|
||
|
*/
|
||
|
public function getProperties()
|
||
|
{
|
||
|
return array(
|
||
|
'class' => $this->class,
|
||
|
'file' => $this->file,
|
||
|
'function' => $this->function,
|
||
|
'line' => $this->line,
|
||
|
'info' => $this->info,
|
||
|
'type' => $this->type,
|
||
|
'startTime' => $this->startTime,
|
||
|
'endTime' => $this->endTime
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* setter of endTime
|
||
|
*
|
||
|
* @since V2.0.0 - 19 apr 2006
|
||
|
*/
|
||
|
public function setEndTime($endTime = '')
|
||
|
{
|
||
|
$this->endTime = $endTime ? $endTime : PHP_Debug::getMicroTimeNow();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* setter of startTime
|
||
|
*
|
||
|
* @see pear bug http://pear.php.net/bugs/10919
|
||
|
*
|
||
|
* @since V2.1.2 - 04 may 2006
|
||
|
*/
|
||
|
public function setStartTime($startTime = '')
|
||
|
{
|
||
|
$this->startTime = $startTime ? $startTime : PHP_Debug::getMicroTimeNow();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Debug_Line default output function
|
||
|
*
|
||
|
* @since V2.0.0 - 11 apr 2006
|
||
|
* @see PHP_Debug::dumpVar()
|
||
|
*/
|
||
|
public function __toString()
|
||
|
{
|
||
|
return '<pre>'.
|
||
|
PHP_Debug::dumpVar(
|
||
|
$this,
|
||
|
__CLASS__,
|
||
|
false,
|
||
|
PHP_DEBUG_DUMP_ARR_STR
|
||
|
)
|
||
|
. '</pre>';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Function that give the debug type lable
|
||
|
*
|
||
|
* @author COil
|
||
|
* @since V2.0.0 - 2 apr 2007
|
||
|
*/
|
||
|
public static function getDebugLabel($type)
|
||
|
{
|
||
|
return self::$debugLineLabels[$type];
|
||
|
}
|
||
|
}
|