fusionspim/php-capsule-listener

此包已被弃用且不再维护。未建议替代包。

用于与Laravel的Eloquent ORM一起使用的简单调试工具

7.0.0 2022-04-25 11:40 UTC

README

Capsule Debug Listener 是一个用于与 Laravel 的 Eloquent ORM 一起使用的简单调试工具。它以 Eloquent 的独立版本(standalone version of Eloquent)命名。

它将显示 Eloquent 在您的代码中执行的查询,以及这些查询在代码库中的来源。

安装

composer require --dev fusionspim/php-capsule-listener

使用

您可以通过创建一个新实例并启用监听来开始使用它

$listener = new CapsuleDebugListener;
$listener->enable();
// Run some SQL.
$listener->disable();

如果您需要在多个文件中启动和停止调试器,可以使用它作为单例

CapsuleDebugListener::getInstance()->enable();
// Run some SQL.
CapsuleDebugListener::getInstance()->disable();

您还可以通过指定一个名称来将其作为多例使用。这对于多个连接可能很有用

CapsuleDebugListener::getInstance('write')
    ->setConnection(Capsule::connection('write'))
    ->enable();
// Run some SQL.
CapsuleDebugListener::getInstance('write')->disable();

还有一些方便的辅助函数对。您可以这样输出跟踪信息

start_dumping_queries();
// Run some SQL.
stop_dumping_queries();

您也可以这样捕获跟踪信息

start_capturing_queries();
// Run some SQL.
$logs = stop_capturing_queries();
var_dump($logs);

默认情况下,输出使用 Symfony的VarDumper 输出,但您也可以在调用 enable() 时指定自己的输出处理函数

(new CapsuleDebugListener)->enable(function (array $stack) {
    // Your custom output handling here.
});

跟踪数组结构如下

[
    // A running count of how many queries have run.
    'count' => 1,
                        
    // The SQL run with parameters replaced.
    // May contain sensitive data.
    'sql' => 'SELECT * FROM foo', 
    
    // An array that contains a cleaned up stack trace of where the query originated from.
    // Excludes Eloquent's codebase and any magic functions.
    'callees' => [
        'Foo\Bar\Model:do_something in /src/Foo/Bar/Model.php:256',
    ],
]

如果您需要调试特定的连接,可以通过 setConnection() 指定

$listener = new CapsuleDebugListener();
$listener->setConnection(Capsule::connection('write'));
$listener->enable();
// Run some SQL.
$listener->disable();