面对现实,debug_backtrace()
输出不是很漂亮。有人编码包装器吗?
什么是您最喜欢的漂亮var_dump()
(可用于商业项目,因此没有GPL(尽管LGPL可以))
另请参阅:A more pretty/informative Var_dump alternative in PHP?
六年后-这个问题一万次-以后,我仍在使用它。它不是在屏幕上看起来不错的方式,例如Kint(非常好)。
它是纯文本,我可以在自动错误报告中通过电子邮件将其发送给自己,并可以使用ChromePhp显示在浏览器的开发人员控制台中。
/**
* @brief Returns an HTML formatted string showing details of the backtrace
*
* Example:
*
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:48 e(373, 'beer', 'curry')
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:53 d(26366, 28255, 8364)
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:58 c()
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:63 b(1283, 15488, 29369)
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:72 a(788, 6077, 25010)
*/
function FormatBacktrace()
{
$result = '<h4>Backtrace</h4>';
foreach (debug_backtrace() as $trace)
{
if ($trace['function'] ==__FUNCTION__)
continue;
$parameters = is_array($trace['args']) ? implode(", ",$trace['args']) : "";
if (array_key_exists('class', $trace))
$result .= sprintf("%s:%s %s::%s(%s)<br>",
$trace['file'],
$trace['line'],
$trace['class'],
$trace['function'],
$parameters);
else
$result .= sprintf("%s:%s %s(%s)<br>",
$trace['file'],
$trace['line'],
$trace['function'],
$parameters);
}
return $result;
}
参考方案
Xdebug extension可以print stacktraces具有可配置的详细程度。
它还提供了一些additional var_dump() features,例如语法着色:
编辑:
关于将Xdebug包含在商业项目中。
Xdebug license只有几个术语,似乎很宽松。
Xdebug是C扩展。因此,在项目中重新分配它或它的一部分可能有些困难。根据您的要求,我看到一些选择:
让最终用户从Linux分发包中安装Xdebug或从站点中安装DLL
为所有受支持的平台分发.dll和.so文件
让最终用户构建源代码
分发自定义的PHP版本
有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…
PHP-从最后一个循环中删除逗号 - php我在循环时有一个PHP,如果是最后一个循环,我想从,中删除最后一个逗号echo '],'; while($ltr = mysql_fetch_array($lt)){ echo '['; echo $ltr['days']. ' ,'. $ltr['name…
PHP Laravel从另一个驱动器读取文件 - php我目前正在学习Laravel。我想知道是否有一种方法可以在Laravel中使用Storage::从另一个硬盘访问文件(使用Windows)。例如,我在驱动器C:上安装了带有Laravel的Xampp,但是我想访问网站目录之外的E:上的文件。我试过使用Storage::files('E:')和File::files('E:…