yfix/yii2-debug-backported

从 Yii2 迁移的 Yii1 调试工具栏

安装: 8

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 41

类型:yii-extension

1.5.2 2017-11-10 19:02 UTC

This package is auto-updated.

Last update: 2024-08-29 04:43:07 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 响应代码,因此无需使用此解决方案。