PHP 调试栏

PHP DebugBar 是另一款出色的工具,可在页面底部显示漂亮而完整的信息栏。它可以显示为调试目的添加的自定义信息和完整的请求信息,包括 $_COOKIE$_SERVER$_POST$_GET 数组以及其中任何数组的数据。除此之外,PHP DebugBar 还会显示异常的详细信息、执行的数据库查询及其详细信息。它还会显示脚本占用的内存和页面加载的时间。

PHP Debug 网站称,DebugBar 可轻松集成到任何应用程序项目中,并显示应用程序任何部分的调试和剖析数据。

它的安装非常简单。您可以下载完整的源代码,将其放在应用程序中的某个位置,然后设置自动加载器加载所有类,或者使用 composer 进行安装。我们将使用 composer 进行安装,因为它是一种简单、干净的安装方式。

Composer 是一款用于管理项目依赖关系的 PHP 工具。它由 PHP 编写,可从 https://getcomposer.org/ 免费获取。我们假定你的机器上已经安装了 composer。

在项目的 composer.json 文件中,将以下代码放入所需部分:

"maximebf/debugbar" : ">=1.10.0"

保存文件,然后发出以下命令:

composer update

Composer 将开始更新依赖项并安装 composer。此外,它还会生成自动加载器文件和/ 或 DebugBar 所需的其它依赖项。

仅当 Composer 在系统上全局安装时,前面的 Composer 命令才有效。 如果不是,我们必须使用以下命令:

php composer.phar update

上述命令应在 composer.phar 所在的文件夹中执行。

安装后,DebugBar 的项目树如下所示:

image 2023 11 05 21 36 26 441

这些目录的结构可能会有些不同,但通常都会如我们之前提到的那样。src 目录包含 DebugBar 的完整源代码。供应商目录下有一些可能需要也可能不需要的第三方模块或 PHP 工具。此外,请注意供应商文件夹中的自动加载器可以自动加载所有类。

现在让我们检查一下安装是否正常。在项目根目录下新建一个文件,命名为 index.php。然后,在其中添加以下代码:

<?php

require "vendor/autoloader.php";

use Debugbar\StandardDebugBar;

$debugger = new StandardDebugBar();
$debugbarRenderer = $debugbar->getJavascriptRenderer();

//Add some messages
$debugbar['messages']->addMessage('PHP 7 by Packt');
$debugbar['messages']->addMessage('Written by Altaf Hussain');
?>
<html>
    <head>
        <?php echo $debugbarRenderer->renderHead(); ?>
    </head>
    <title>Welcome to Debug Bar</title>
    <body>
        <h1>Welcome to Debug Bar</h1>

        <!—- display debug bar here -->
        <?php echo $debugbarRenderer->render(); ?>
    </body>
</html>

在前面的代码中,我们首先包含了自动加载器(autoloader),它是由 composer 生成的,用于自动加载所有类。然后,我们使用了 DebugBar\StandardDebugbar 命名空间。之后,我们实例化了两个对象: StandardDebugBargetJavascriptRendererStandardDebugBar 对象是一个对象数组,其中包含不同收集器的对象,如消息收集器等。getJavascriptRenderer 对象负责将所需的 JavaScript 和 CSS 代码放在页眉处,并在页面底部显示调试栏。

我们使用 $debugbar 对象向消息收集器添加消息。收集器负责从数据库、HTTP 请求、消息等不同来源收集数据。

在 HTML 代码的头部,我们使用 $debugbarRendererrenderHead 方法来放置所需的 JavaScript 和 CSS 代码。之后,就在 <body> 块的末尾,我们使用了同一对象的 render 方法来显示调试栏。

现在,在浏览器中加载应用程序,如果你发现浏览器底部出现了如下截图所示的条形图,那么恭喜你!DebugBar 已正确安装并正常运行。

image 2023 11 05 21 39 41 320

右侧显示的是应用程序的内存消耗和加载时间。

如果我们点击 "消息" 选项卡,就会看到我们添加的消息,如下图所示:

image 2023 11 05 21 40 23 398

DebugBar 提供数据收集器,用于从不同来源收集数据。这些收集器被称为基础收集器,其中一些数据收集器如下:

  • 消息收集器收集日志信息,如上例所示

  • TimeData 收集器收集总的执行时间以及特定操作的执行时间

  • 异常收集器显示发生的所有异常

  • PDO 收集器记录 SQL 查询

  • RequestData 收集器收集 PHP 全局变量的数据,如 $_SERVER、$_POST、$_GET 等

  • 配置收集器用于显示数组的任何键值对

此外,还有一些收集器能够从 Twig、Swift Mailer、Doctrine 等第三方框架收集数据。这些收集器被称为桥接收集器。PHP DebugBar 也可以轻松集成到著名的 PHP 框架中,如 Laravel 和 Zend Framework 2。

本书不可能对 PHP DebugBar 进行完整的讨论。因此,这里只提供一个简单的介绍。PHP DebugBar 有一个很好的文档,提供了完整的细节和示例。文档可在 http://phpdebugbar.com/docs/readme.html 上找到。

总结

在本章中,我们讨论了调试 PHP 应用程序的不同工具。我们使用了 Xdebug、Sublime Text 3 和 Eclipse 来调试程序。然后,我们使用 Xdebug 剖析器剖析应用程序,找出执行统计信息。最后,我们讨论了用 PHP DebugBar 来调试程序。

在下一章中,我们将讨论负载测试工具,我们可以使用这些工具在应用程序上放置负载或虚拟访问者,以便对其进行负载测试,找出应用程序可以承受的负载量,以及负载对性能的影响。