共计 1815 个字符,预计需要花费 5 分钟才能阅读完成。
调试 Debug
实验功能
我们已经努力使事情正常工作,但是可能会出现错误,导致和 / 或收取此功能所需的资产。如果您在使用过程中发生过事故,请通知我们。
内容 Contents
- 介绍 Introduction
- 激活 Activation
- 调试消息 Debug messages
- 添加您自己的数据收集器 Add your own data collectors
介绍 Introduction
由于将 Luthier CI 与这个出色的工具集成在一起,您可以将 PHP Debug Bar 添加到您的应用程序中。
激活 Activation
要激活此功能(默认情况下已禁用),请转到您的 application/config/hooks.php
文件并替换:
<?php
# application/config/hooks.php
defined('BASEPATH') OR exit('No direct script access allowed');
// (...)
$hook = Luthier\Hook::getHooks();
附:
<?php
# application/config/hooks.php
defined('BASEPATH') OR exit('No direct script access allowed');
// (...)
$hook = Luthier\Hook::getHooks(
['modules' => ['debug']
]
);
您应该在窗口底部看到调试栏:
调试消息 Debug messages
要添加调试消息,请使用该类的 log()
静态方法 Luthier\Debug
:
# use Luthier\Debug;
Debug::log($variable, $type, $dataCollector);
$variable
要调试的变量在哪里,并且 $type
是消息的类型,可以是 'info'
, 'warning'
或 'error'
.
例:
<?php
# application/controllers/TestController.php
use Luthier\Debug;
defined('BASEPATH') OR exit('No direct script access allowed');
class TestController extends CI_Controller
{public function index()
{Debug::log('Welcome to Luthier-CI' . LUTHIER_CI_VERSION . '!');
Debug::log('Hello world!','info');
Debug::log('This is a warning, watch out!','warning');
Debug::log('Oh snap! an error was occurred!','error');
$this->load->view('welcome_message');
}
}
结果如下:
可选 $dataCollector
参数是将存储消息的 data collector 的名称
Debug::log('Custom data collector','error','my_custom_data_collector');
如果需要存储要在下一个请求中显示的消息(例如,在提交表单后),请使用该 logFlash()
方法,其语法与 log()
静态方法相同:
Debug::logFlash('Hey! this will be available in the next request','info');
在生产环境中取消激活
如果将应用程序的环境设置 production
为此功能将自动禁用,并且将忽略任何调试代码
要求输出缓冲区中有数据
Luthier CI 在输出缓冲区中添加 PHP Debug Bar 代码,然后由 output
CodeIgniter 库处理并发送到浏览器。因此,必须至少使用一次函数 $this->load-> view()
或明确定义输出缓冲区才能工作。该 echo
语句不产生任何内部输出缓冲器。此外,使用函数停止执行脚本 die
或 exit
将阻止显示 PHP 调试栏。
添加您自己的数据收集器 (Add your own data collectors)
可以添加自己的数据收集器并在其中存储消息。要将数据收集器添加到 PHP Debug Bar 实例,请使用 addCollector()
static 方法:
# use Luthier\Debug;
Debug::addCollector(new MyCollector());