yangweijie/think-debugbar

v1.0.7 2024-09-20 01:03 UTC

This package is auto-updated.

Last update: 2024-09-20 01:28:14 UTC


README

用于ThinkPHP6+的DebugBar扩展。

安装

composer

composer require yangweijie/think-debugbar --dev

.env配置修改

[debugbar]
DEBUGBAR_ENABLED=true

其他配置请参考config/debugbar中的环境变量使用

nginx

nginx项目的rewrite中需要配置ThinkPHP的

location / {
	index index.php;
	if (!-e $request_filename){
		rewrite  ^(.*)$  /index.php?s=$1  last;
		break;
	}
}

静态资源缓存需要取消注释

#    location ~ .+\.(gif|jpg|jpeg|png|bmp|swf)$
#    {
#        expires      1d;
#        error_log nul;
#        access_log off;
#    }

#    location ~ .+\.(js|css)$
#    {
#        expires      1h;
#        error_log nul;
#        access_log off;
#    }

扩展

collectors

普通

class MyDataCollector extends DebugBar\DataCollector\DataCollector
{
    public function collect()
    {
        return array("uniqid" => uniqid());
    }

    public function getName()
    {
        return 'mycollector';
    }
}
class MyDataCollector extends DebugBar\DataCollector\DataCollector implements DebugBar\DataCollector\Renderable
{
    // ...

    public function getWidgets()
    {
        return array(
            "mycollector" => array(
                "icon" => "cogs",
                "tooltip" => "uniqid()",
                "map" => "uniqid",
                "default" => "''"
            ),
            "mycollector:badge" => [
                "map" => "SQL.nb_statements",
                "default" => 0
            ]
        );
    }
}

badge角标,可以从collect中取map的key

让message中可以打开指定文件

如文件加载列表

    /**
     * {@inheritDoc}
     */
    public function collect()
    {
        $files = $this->getIncludedFiles();

        $included = [];
        if(!$this->getXdebugLinkTemplate()){
            $this->setEditorLinkTemplate(app()->config->get('debugbar.editor'));
        }
        foreach ($files as $file) {

            if (Str::contains($file, $this->ignored)) {
                continue;
            }

            $included[] = [
                'message'   => "'" . $this->stripBasePath($file) . "',",
                // Use PHP syntax so we can copy-paste to compile config file.
                'is_string' => true,
                'xdebug_link'=>$this->getXdebugLink($file),
            ];
        }

        return [
            'messages' => $included,
            'count'    => count($included),
        ];
    }

message中包含xdebug_link $this->getXdebugLink($file)

资源

扩展JavascriptRenderer类,实现renderHead方法替换静态资源头部,然后注册路由控制器来实现资源地址动态返回js文件

升级功能

SQL标签

将sql日志独立出来,显示在SQL标签里,有时间线,可以点击跳转到编辑器,可以一键复制

Ajax监听

支持xhr请求监听,可以切换历史请求查看调试信息

添加模型显示

显示请求中使用的模型,可以打开跳转

加载文件可以打开跳转到源文件

标签页汉化

logo显示官方logo

编辑器、ide打开方式

sublime

需要安装GitHub - thecotne/subl-protocol: sublime text protocol插件

phpstorm

参考laravel-debugbar中正确使用ide phpstorm打开项目文件的方式 | Laravel China 社区文章放置js和添加注册表即可