kilbiller/debug_kit

CakePHP Debug Kit 的分支

安装量: 6,297

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 574

类型:cakephp-plugin

4.0.1 2018-06-14 15:47 UTC

README

DebugKit 为 CakePHP 应用程序提供调试工具栏和增强的调试工具。

要求

主分支有以下要求

  • CakePHP 2.2.0 或更高版本。
  • PHP 5.3.0 或更高版本。

安装

使用 Composer

从您的项目 composer.json 所在的目录使用 Composer 安装此插件

php composer.phar require cakephp/debug_kit "^2.2.0"

如果您只想将 DebugKit 用于开发环境,请考虑使用 "--dev"。

由于此插件在其自己的 composer.json 中设置了 cakephp-plugin 类型,因此 composer 会将其安装到您的 /Plugin 目录中,而不是常规的 vendors 文件。建议您将 /Plugin/DebugKit 添加到您的 .gitignore 文件中。(为什么?阅读此内容。)

[手动]

  • 下载 DebugKit 归档
  • 解压缩下载内容。
  • 将生成的文件夹重命名为 DebugKit
  • 然后将此文件夹复制到 app/Plugin/

[GIT 子模块]

在您的应用程序目录中输入

git submodule add --branch 2.2 git://github.com/cakephp/debug_kit.git Plugin/DebugKit
git submodule init
git submodule update

[GIT Clone]

在您的插件目录中输入

git clone --single-branch --branch 2.2 git://github.com/cakephp/debug_kit.git DebugKit

启用插件

  • 在 2.x 版本中,您需要在您的 app/Config/bootstrap.php 文件中启用插件。如果您已经使用了 CakePlugin::loadAll();,则以下内容不是必需的。
    CakePlugin::load('DebugKit');
  • 在您的 app/Controller/AppController.php 中包含工具栏组件
class AppController extends Controller {
         public $components = array('DebugKit.Toolbar');
}
  • app/Config/core.php 中设置 Configure::write('debug', 1);
  • 如果您想体验 DebugKit SQL 日志的强大功能,请确保从布局中移除 'sql_dump' 元素(通常在 app/View/Layouts/default.ctp 中)。

报告问题

如果您遇到 DebugKit 的问题,请打开 GitHub 上的一个问题。

贡献

如果您想为 DebugKit 做贡献,请查看任何计划功能的 路线图。您可以 分支 项目,添加功能,并通过 pull requestsissues 提交。

版本

DebugKit 有几个版本,每个版本都与 CakePHP 的不同版本兼容。通过下载标签或检查正确的分支来使用适当的版本。

  • 1.0, 1.1, 1.2 与 CakePHP 1.2.x 兼容。这些 DebugKit 版本不适用于 CakePHP 1.3。您还可以使用 1.2-branch 获取最新更新和错误修复。
  • 1.3.0 仅与 CakePHP 1.3.x 兼容。它不适用于 CakePHP 1.2。您还可以使用 1.3 分支获取最新更新和错误修复。
  • 2.0.0 仅与 CakePHP 2.0.x 兼容。它不适用于之前的 CakePHP 版本。
  • 2.2.0 与 CakePHP 2.2.0 及更高版本兼容。由于此版本使用了 2.2 版本中可用的新 API,因此它将无法与旧版本的 CakePHP 一起工作。
  • 2.2.x 与 CakePHP 2.2.0 及更高版本兼容。对于使用 CakePHP 2.4 的用户来说,这是一个必要的升级,因为在该版本中日志记录器的命名约定发生了变化。
  • 3.x.x 与 CakePHP 3.0.0 及更高版本兼容。这些版本是在 master 分支中开发的。

文档

工具栏面板

DebugKit 工具栏由几个面板组成,这些面板在安装并加载 DebugKit 之后,通过点击浏览器右上角的 CakePHP 图标来显示。每个面板由一个面板类和一个视图元素组成。通常,一个面板负责收集和显示一种类型的信息,例如日志或请求信息。您可以选择工具栏中的面板或添加您自己的自定义面板。

内置面板

有几个内置面板,它们是:

  • 历史记录 允许访问先前的请求信息,在调试带有重定向的操作时非常有用。
  • 请求 显示有关当前请求的信息,包括 GET、POST、Cake 参数、当前路由信息以及如果 CookieComponent 在您控制器中,则显示 Cookie。
  • 会话 显示当前会话中的信息。
  • 计时器 显示在请求期间设置的任何计时器(请参阅 DebugKitDebugger 了解更多信息)。此外,还会显示组件回调中的内存使用情况以及峰值内存使用。
  • SQL 日志 显示每个数据库连接的 SQL 日志。
  • 日志 显示对此次请求的日志文件中添加的任何条目。
  • 变量 显示在控制器中设置的视图变量。
  • 环境 显示与 PHP + CakePHP 相关的环境变量。

配置

工具栏有一些配置设置。设置通过组件声明传递,就像正常的组件配置一样。

public $components = array(
    'DebugKit.Toolbar' => array(/* array of settings */)
);

配置面板

您可以根据需要自定义工具栏,显示您自己的自定义面板或隐藏任何内置面板。

public $components = array('DebugKit.Toolbar' => array(
    'panels' => array('MyCustom', 'timer'=>false)
    )
);

将显示您的自定义面板和除“计时器”面板之外的所有内置面板。

控制面板

使用面板键,您可以指定要加载哪些面板,以及面板加载的顺序。

public $components = array(
        'DebugKit.Toolbar' => array('panels' => array('MyCustom', 'timer' => false))
);

将添加您的自定义面板 MyCustomPanel 到工具栏中,并排除默认的 Timer 面板。除了选择您想要的面板外,您还可以将选项传递到面板的 __construct 中。例如,内置的 History 面板使用 history 键来设置要跟踪的历史请求的数量。

public $components = array(
        'DebugKit.Toolbar' => array('history' => 10)
);

将加载 History 面板并将其历史级别设置为 10。不将 panels 键传递给面板构造函数。

forceEnable

forceEnable 设置是 DebugKit 1.1 中新增的。它允许您强制工具栏显示,而不管 Configure::read('debug'); 的值如何。当您使用调试套件对应用程序进行性能分析时,这非常有用,因为您可以在生产模式下运行应用程序时启用工具栏。

autoRun

autoRun 是 DebugKit 1.2 中新增的配置设置。它允许您控制是否自动显示工具栏,或者您是否希望使用查询字符串参数来启用它。将此配置键设置为 false 以使用工具栏的查询字符串参数切换。

public $components = array(
    'DebugKit.Toolbar' => array('autoRun' => false)
);

访问页面时,您可以在 URL 中添加 ?debug=true,工具栏将可见。否则,它将保持隐藏且不执行。

开发您自己的面板

您可以为 DebugKit 创建自定义面板,以帮助您调试应用程序。

面板类

面板类只需放置在Lib路径下的Panel目录中。文件名应与类名匹配,因此类MyCustomPanel应期望文件名为app/Lib/Panel/MyCustomPanel.php

App::uses('DebugPanel', 'DebugKit.Lib');

/**
 * My Custom Panel
 */
class MyCustomPanel extends DebugPanel {
        ...
}

请参阅示例 Test/test_app/Plugin/DebugkitTestPlugin/Lib/Panel/PluginTestPanel.php

请注意,自定义面板必须继承自DebugPanel类。面板可以定义cssjavascript属性来在页面上包含额外的CSS或javascript。这两个属性都应该是数组。

class MyCustomPanel extends DebugPanel {
        public $javascript = array(
                '/my_plugin/js/custom_panel.js'
        );
}

回调函数

面板对象有两个回调函数,允许它们钩入并对当前请求进行反射。

startup(Controller $controller)

每个面板的startup()方法在组件startup()过程中被调用。$controller是当前控制器对象的引用。

beforeRender(Controller $controller)

startup()类似,beforeRender()在组件beforeRender()过程中被调用。同样,$controller是当前控制器的引用。通常在这个阶段,你可以对控制器进行额外的反射。面板的beforeRender()返回值会自动由工具栏组件传递给视图。因此,在正常使用中,你不需要显式地将变量设置到控制器中。

beforeRender()回调示例

/**
 * beforeRender callback - grabs request params
 *
 * @return array
 */
 public function beforeRender(Controller $controller) {
     return $controller->params;
 }

这将返回cake的内部params数组。面板的beforeRender()返回值在面板元素中作为$content可用。

面板元素

每个面板都应有一个视图元素来渲染面板内容。元素名称必须是类名的下划线变形。例如,SessionPanel有一个名为session_panel.ctp的元素,而sqllogPanel有一个名为sqllog_panel.ctp的元素。这些元素应位于你的View/Elements目录的根目录。

自定义标题和元素

面板应通过约定获取其标题和元素名称。但是,如果你需要选择自定义元素名称或标题,有一些属性允许这种配置。

  • $title - 设置用于工具栏的自定义标题。此标题将用作面板的按钮。
  • $elementName - 设置用于渲染面板的自定义元素名称。

面板作为Cake插件

Cake插件提供的面板几乎与其他插件完全相同,只有一个小的不同:你必须设置public $plugin为插件目录的名称,这样面板的元素就可以在渲染时定位。

class MyCustomPanel extends DebugPanel {
    public $plugin = 'MyPlugin';
        ...
}

要使用插件面板,请使用常见的CakePHP点表示法来指定插件。

public $components = array('DebugKit.Toolbar' => array(
    'panels' => array('MyPlugin.MyCustom')
));

上述代码将加载所有默认面板以及来自MyPlugin的自定义面板。

缓存引擎

默认情况下,DebugKit使用文件作为内部缓存的引擎,但如果你想使用另一个缓存引擎,你可以通过在组件配置数组中添加一个缓存键来自定义它。

public $components = array('DebugKit.Toolbar' => array(
        'cache' => array('engine' => 'Memcache', 'servers' => array('127.0.0.1:11211'))
        )
);

你可以使用CakePHP支持的任何缓存引擎,就像在core.php和bootstrap.php文件中通过Cache::config()方法设置的方式一样。

查看AJAX请求的工具栏

在进行AJAX请求时,你将无法看到工具栏的HTML版本。然而,如果你有一个支持FirePHP的浏览器扩展,你可以在浏览器中查看工具栏。

安装正确的扩展后,你应该在每个AJAX请求上看到工具栏数据输出。