用于调试PHP应用程序的简单而强大的工具。

1.10.1 2024-06-23 14:24 UTC

README

logo

用PHP革命化您的调试体验

Buggregator Trap

Twitter Discord Support


Trap 是一个与 Buggregator 服务器一起使用以增强调试体验的包。
Trap 包括

  • 一组与任何 Buggregator 服务器直接交互的功能。
  • Symfony VarDumper 的扩展,安装 Trap 后立即生效。
  • 一个精简版的 Buggregator 服务器,不需要 Docker,专为本地使用。

目录

安装

要在您的 PHP 应用程序中安装 Buggregator Trap,请使用 Composer 将包添加为项目中的 dev 依赖项

composer require --dev buggregator/trap -W

PHP Latest Version on Packagist License Total Downloads

就这样。Trap 已准备好使用

Phar

有时您的项目可能与 Trap 的依赖项冲突,或者您可能对仅使用本地服务器(例如,分析本地分析器文件)感兴趣。在这种情况下,请考虑将 Trap 作为 Phar(一个自包含的 PHP 可执行文件)安装。使用 wget

wget https://github.com/buggregator/trap/releases/latest/download/trap.phar
chmod +x trap.phar
./trap.phar --version

使用 Phive

phive install buggregator/trap

概述

Buggregator Trap 为您的代码提供了一套工具。首先,只需在您的包中包含 Buggregator Trap 就可以增强 Symfony Var-Dumper 的功能。

如果您已经使用过 google/protobuf,您可能知道它有多令人不快。现在让我们比较 protobuf-message 的输出:左边(带有 trap)和右边(没有 trap)。

trap-proto-diff

这种同时紧凑且信息丰富的输出格式在 Buggregator 服务器界面中也将同样紧凑且信息丰富。现在,处理 protobuf 变得有趣。

Buggreagtor Trap 包含一个控制台应用程序 - 一个迷你服务器。应用程序完全用 PHP 编写,无需在系统中安装 Docker。它可能看起来与 symfony/var-dumper 服务器一样,但它不一样。Buggregator Trap 具有更广泛的调试消息处理程序(“陷阱”)。

  • Symfony var-dumper,
  • Monolog,
  • Sentry,
  • SMTP,
  • HTTP 摘要,
  • Ray,
  • 任何原始数据

您可以轻松地可视化和分析有关代码库中各种元素的控制台信息。

以下是您可以使用 Trap 预期的控制台输出预览

此外,您还可以在代码中手动设置陷阱。使用 trap() 函数,该函数几乎与 Symfony 的 dump() 一样,但将配置转储器以将转储发送到本地服务器,除非提供其他用户设置。

trap() 还有很多有用的选项

// Limit the depth of the dumped structure
trap($veryDeepArray)->depth(3);

foreach ($veryLargeArray as $item) {
    // We don't need to dump more than 3 items
    trap($item)->times(3);
}

// Dump once if the condition is true
trap($animal)->once()->if($var instanceof Animal\Cat);

提示

开发中的功能:添加标志 --ui 以在无需 Docker 的情况下提升 Buggregator 服务器 Web 界面。 trap-ui

我们重视产品代码库的质量,并努力提供最佳的用户体验。Buggregator Trap 已通过概念验证阶段,现在已成为 Buggregator 生态系统的重要组成部分。我们对整个生态系统的开发有着宏伟的计划,如果您愿意加入这段旅程,我们将不胜荣幸。

用法

成功安装 Buggregator Trap 后,您可以通过以下命令启动调试过程

vendor/bin/trap

此命令将启动 Trap 服务器,准备接收任何调试消息。一旦捕获到调试消息,您将在此终端看到关于它的方便的报告。

然后只需在您的代码中调用 trap() 函数

// dump the current stack trace
trap()->stackTrace();

// dump a variable with a depth limit
trap($var)->depth(4);

 // dump a named variables sequence
trap($var, foo: $far, bar: $bar);

// dump a variable and return it
$responder->respond(trap($response)->return()); 

注意:如果未设置,trap() 函数将自动配置 $_SERVER['REMOTE_ADDR']$_SERVER['REMOTE_PORT']

此外,这里还有一些快捷方式

  • tr(...) - 等同于 trap(...)->return()
  • td(...) - 等同于 trap(...); die;

如果未提供参数,它们将显示简短的堆栈跟踪、使用的内存和快捷方式调用之间的时间。

function handle($input) {
    tr(); // Trace #0  -.---  3.42M

    $data = $this->prepareData($input);

    tr(); // Trace #1  0.015ms  6.58M

    $this->processor->process(tr(data: $data));

    td(); // exit with output: Trace #2  1.15ms  7.73M
}

默认端口

Trap 可以自动识别流量类型。因此,无需为不同的协议打开单独的端口。默认情况下,它使用与 Buggregator 服务器相同的端口:9912991310258000。但是,如果您希望使用不同的端口,可以使用 -p 选项轻松进行调整

vendor/bin/trap -p9912 --ui=8000

也可以使用环境变量来设置端点

  • TRAP_TCP_PORTS - 用于 TCP 流量:9912,9913,1025,8000
  • TRAP_TCP_HOST - 用于 TCP 主机(默认:127.0.0.1
  • TRAP_UI_PORT - 用于 Web 界面:8080

选择您的发送者

Buggregator Trap 提供各种“发送者”,指定转储将发送到何处。目前,可用的发送者选项包括

  • console:此选项将转储直接显示在控制台。
  • server:选择此选项,转储将发送到远程 Buggregator 服务器。
  • file:这允许将转储存储在文件中,以供将来参考。

默认情况下,Trap 服务器设置为在控制台中显示转储。但是,您可以使用 -s 选项轻松选择您首选的发送者。

例如,要同时使用控制台、文件和服务器发送者,您将输入

vendor/bin/trap -s console -s file -s server

贡献

我们相信社区驱动的发展力量。以下是您可以如何做出贡献

  • 报告错误:遇到故障?请在我们的问题跟踪器告诉我们。
  • 功能建议:对改进 Buggregator Trap 有想法?创建功能请求
  • 代码贡献:提交拉取请求以帮助我们改进 Buggregator Trap 代码库。您可以在此处找到标记为“help wanted”的问题列表。
  • 文档:帮助我们改进我们的指南和教程,以提供更流畅的用户体验。
  • 社区支持:加入我们的Discord,并帮助他人充分利用 Buggregator。
  • 传播信息:在社交媒体上分享您的 Buggregator 经验,并鼓励他人做出贡献。
  • 捐赠:通过成为赞助人或进行一次性捐赠来支持我们的工作
    roxblnfk butschster

请记住,每一个伟大的开发者都曾经是初学者。为开源项目做出贡献是您成为更好的开发者的旅程中的一步。所以,不要犹豫,开始做出贡献吧!

许可证

Buggregator Trap 是开源软件,许可协议为 BSD-3 许可。