zhuravljov/yii2-debug

Yii调试工具栏

安装次数: 451,622

依赖项: 4

建议者: 0

安全: 0

星星: 143

关注者: 17

分支: 41

开放问题: 8

类型:yii-extension

1.5.2 2017-11-10 19:02 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:18 UTC


README

为Yii 1.1提供的调试面板(从Yii 2迁移而来)。

Latest Stable Version Total Downloads

安装

此扩展可在packagist.org找到,可以通过以下命令使用composer安装

composer require --dev zhuravljov/yii2-debug.

如果您想手动安装此扩展,只需将源代码复制到/protected/extensions目录。

要启用应用程序中的工具栏,请将以下行添加到配置中

return array(
    'preload' => array(
        'debug',
    ),
    'components' => array(
        'debug' => array(
            'class' => 'vendor.zhuravljov.yii2-debug.Yii2Debug', // composer installation
            //'class' => 'ext.yii2-debug.Yii2Debug', // manual installation
        ),
        'db' => array(
            'enableProfiling' => true,
            'enableParamLogging' => true,
        ),
    ),
);

配置

您可以使用以下选项自定义调试面板的行为

  • enabled - 启用/禁用调试面板。
  • allowedIPs - 允许访问调试工具栏的IP列表。默认 array('127.0.0.1', '::1')
  • accessExpression - 用于访问评估的额外PHP表达式。
  • logPath - 存储调试器数据文件的目录。可以使用路径别名指定。默认 /runtime/debug
  • historySize - 要保留的调试数据文件的最大数量。如果生成的文件更多,则最旧的文件将被删除。
  • highlightCode - 突出显示代码。突出显示SQL查询和PHP变量。此参数可以针对每个面板单独设置。
  • moduleId - 查看存储的调试日志的模块ID。默认 debug
  • showConfig - 显示简短的应用程序配置页面。默认 false
  • hiddenConfigOptions - 要隐藏的不安全组件选项列表(如登录、密码、密钥)。默认隐藏db组件的usernamepassword
  • internalUrls - 在调试模块中使用漂亮的路由规则。
  • panels - 调试面板列表。

每个附加的面板都可以单独配置,例如

'debug' => array(
    'class' => 'ext.yii2-debug.Yii2Debug',
    'panels' => array(
        'db' => array(
            // Disable code highlighting.
            'highlightCode' => false,
            // Disable substitution of placeholders with values in SQL queries.
            'insertParamValues' => false,
        ),
    ),
),

每个面板都有回调选项filterData。您可以在将输入数据写入调试日志之前定义自定义函数来过滤数据。这在需要隐藏某些秘密或从日志中删除数据时非常有用。小心操作数据结构。这可能导致日志解析错误。

示例

'debug' => array(
    'class' => 'ext.yii2-debug.Yii2Debug',
    'panels' => array(
        'db' => array(
            'filterData' => function($data){
                // Your code here
                return $data;
            }
        ),
    ),
),

创建自己的面板

要创建自己的调试面板,您可以扩展类Yii2DebugPanel,例如

class MyTestPanel extends Yii2DebugPanel
{
    /**
     * The name of panel printed in debugger
     */
    public function getName()
    {
        return 'Name';
    }

    /**
     * Return summary html with results of execution in current request.
     * Data is available through $this->data
     */
    public function getSummary()
    {
        return '';
    }

    /**
     * Return detailed html report with results of execution in current request.
     * Data is available through $this->data
     */
    public function getDetail()
    {
        return '';
    }

    /**
     * Return data required for storing in logs.
     */
    public function save()
    {
        return array();
    }
}

然后在配置中附加此面板

'panels' => array(
    'test' => array(
        'class' => 'path.to.panel.MyTestPanel',
        // ...
    ),
),

禁用单个面板

要禁用单个面板(无论是核心还是自定义面板),请将面板配置中的enabled属性设置为false

示例:禁用核心profiling面板

'panels' => array(
    'profiling' => array(
        'enabled' => false,
        // ...
    ),
),

变量转储

使用静态方法Yii2Debug::dump(),您可以转储任何数据,并在稍后调试日志中检查它。

杂项

状态码

如果您使用的是PHP < 5.4,则调试面板无法自动检测重定向。您可以使用以下代码作为解决方案

'panels' => array(
    'request' => array(
        'filterData' => function($data){
            if (empty($data['statusCode'])) {
                if (isset($data['responseHeaders']['Location'])) {
                    $data['statusCode'] = 302;
                } else {
                    $data['statusCode'] = 200;
                }
            }
            return $data;
        },
    ),
),

这样的代码只是当存在Location头时设置302代码。4xx和5xx代码可以由调试面板自动检测。在PHP 5.4及以上版本中,调试面板使用本机PHP函数http_response_code()来检测HTTP响应代码,因此不需要使用此解决方案。