Viewing file: DebugLine.php (7.37 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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];
}
}
|