mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Added a shorthand stackTrace() method
This commit is contained in:
parent
3a70d9c033
commit
ac0053d660
2 changed files with 80 additions and 30 deletions
|
@ -20,6 +20,7 @@ require_once CAKE . 'basics.php';
|
||||||
|
|
||||||
App::uses('Folder', 'Utility');
|
App::uses('Folder', 'Utility');
|
||||||
App::uses('CakeResponse', 'Network');
|
App::uses('CakeResponse', 'Network');
|
||||||
|
App::uses('Debugger', 'Utility');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BasicsTest class
|
* BasicsTest class
|
||||||
|
@ -1140,6 +1141,24 @@ EXPECTED;
|
||||||
$this->assertEquals($expected, stripslashes_deep($nested));
|
$this->assertEquals($expected, stripslashes_deep($nested));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests that the stackTrace() method is a shortcut for Debugger::trace()
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testStackTrace() {
|
||||||
|
ob_start();
|
||||||
|
list(, $expected) = array(stackTrace(), Debugger::trace());
|
||||||
|
$result = ob_get_clean();
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
|
||||||
|
$opts = array('args' => true);
|
||||||
|
ob_start();
|
||||||
|
list(, $expected) = array(stackTrace($opts), Debugger::trace($opts));
|
||||||
|
$result = ob_get_clean();
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test pluginSplit
|
* test pluginSplit
|
||||||
*
|
*
|
||||||
|
|
|
@ -71,17 +71,20 @@ if (!function_exists('debug')) {
|
||||||
* @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#debug
|
* @link http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html#debug
|
||||||
*/
|
*/
|
||||||
function debug($var, $showHtml = null, $showFrom = true) {
|
function debug($var, $showHtml = null, $showFrom = true) {
|
||||||
if (Configure::read('debug') > 0) {
|
if (!Configure::read('debug')) {
|
||||||
App::uses('Debugger', 'Utility');
|
return;
|
||||||
$file = '';
|
}
|
||||||
$line = '';
|
App::uses('Debugger', 'Utility');
|
||||||
$lineInfo = '';
|
|
||||||
if ($showFrom) {
|
$file = '';
|
||||||
$trace = Debugger::trace(array('start' => 1, 'depth' => 2, 'format' => 'array'));
|
$line = '';
|
||||||
$file = str_replace(array(CAKE_CORE_INCLUDE_PATH, ROOT), '', $trace[0]['file']);
|
$lineInfo = '';
|
||||||
$line = $trace[0]['line'];
|
if ($showFrom) {
|
||||||
}
|
$trace = Debugger::trace(array('start' => 1, 'depth' => 2, 'format' => 'array'));
|
||||||
$html = <<<HTML
|
$file = str_replace(array(CAKE_CORE_INCLUDE_PATH, ROOT), '', $trace[0]['file']);
|
||||||
|
$line = $trace[0]['line'];
|
||||||
|
}
|
||||||
|
$html = <<<HTML
|
||||||
<div class="cake-debug-output">
|
<div class="cake-debug-output">
|
||||||
%s
|
%s
|
||||||
<pre class="cake-debug">
|
<pre class="cake-debug">
|
||||||
|
@ -89,33 +92,61 @@ if (!function_exists('debug')) {
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
HTML;
|
HTML;
|
||||||
$text = <<<TEXT
|
$text = <<<TEXT
|
||||||
%s
|
%s
|
||||||
########## DEBUG ##########
|
########## DEBUG ##########
|
||||||
%s
|
%s
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
TEXT;
|
TEXT;
|
||||||
$template = $html;
|
$template = $html;
|
||||||
if (php_sapi_name() === 'cli' || $showHtml === false) {
|
if (php_sapi_name() === 'cli' || $showHtml === false) {
|
||||||
$template = $text;
|
$template = $text;
|
||||||
if ($showFrom) {
|
if ($showFrom) {
|
||||||
$lineInfo = sprintf('%s (line %s)', $file, $line);
|
$lineInfo = sprintf('%s (line %s)', $file, $line);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ($showHtml === null && $template !== $text) {
|
|
||||||
$showHtml = true;
|
|
||||||
}
|
|
||||||
$var = Debugger::exportVar($var, 25);
|
|
||||||
if ($showHtml) {
|
|
||||||
$template = $html;
|
|
||||||
$var = h($var);
|
|
||||||
if ($showFrom) {
|
|
||||||
$lineInfo = sprintf('<span><strong>%s</strong> (line <strong>%s</strong>)</span>', $file, $line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf($template, $lineInfo, $var);
|
|
||||||
}
|
}
|
||||||
|
if ($showHtml === null && $template !== $text) {
|
||||||
|
$showHtml = true;
|
||||||
|
}
|
||||||
|
$var = Debugger::exportVar($var, 25);
|
||||||
|
if ($showHtml) {
|
||||||
|
$template = $html;
|
||||||
|
$var = h($var);
|
||||||
|
if ($showFrom) {
|
||||||
|
$lineInfo = sprintf('<span><strong>%s</strong> (line <strong>%s</strong>)</span>', $file, $line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf($template, $lineInfo, $var);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('stackTrace')) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outputs a stack trace based on the supplied options.
|
||||||
|
*
|
||||||
|
* ### Options
|
||||||
|
*
|
||||||
|
* - `depth` - The number of stack frames to return. Defaults to 999
|
||||||
|
* - `args` - Should arguments for functions be shown? If true, the arguments for each method call
|
||||||
|
* will be displayed.
|
||||||
|
* - `start` - The stack frame to start generating a trace from. Defaults to 1
|
||||||
|
*
|
||||||
|
* @param array $options Format for outputting stack trace
|
||||||
|
* @return mixed Formatted stack trace
|
||||||
|
* @see Debugger::trace()
|
||||||
|
*/
|
||||||
|
function stackTrace(array $options = array()) {
|
||||||
|
if (!Configure::read('debug')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
App::uses('Debugger', 'Utility');
|
||||||
|
|
||||||
|
$options += array('start' => 0);
|
||||||
|
$options['start']++;
|
||||||
|
echo Debugger::trace($options);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue