nklatt/debugout

DebugOut for PHP,用于以传统方式跟踪代码执行:使用printlines。

v0.0.1 2016-06-09 14:10 UTC

This package is not auto-updated.

Last update: 2024-09-21 07:17:11 UTC


README

DebugOut for PHP,用于以传统方式跟踪代码执行:使用printlines。

历史

我最初在90年代中期为C++创建了这对类,DebugOut和DynamicDebug。后来它被移植到Ada 95,现在PHP;我没有将其移植到Java,因为DebugOut类依赖于在实例化后立即调用其析构函数,而Java的垃圾收集不会这样做。(C++和Ada版本都是线程感知的;因为我还没有机会在PHP中使用线程,所以这个版本不包括这个功能。)

目的

它们允许您对代码进行配置,以便您可以跟踪执行路径到您希望的程度。DebugOut处理输出,而DynamicDebug根据配置文件控制要跟踪的哪些范围,该配置文件在每次(例如,页面加载)开始时读取。

安装

使用[Composer]安装包

composer require nklatt/debugout

使用方法

使用此包有两个步骤。

首先,您需要在希望跟踪/调试的函数/方法中使用DebugOut实例。在函数顶部添加$debugOut = new DebugOut(__FUNCTION__, '<flag>');,然后在主体中添加对$debugOut->putLine的调用,传递一个要输出的字符串。

其次,您需要为任何给定运行启用您希望看到的标志的日志记录。这是通过调用DynamicDebug::setEnabledFlags(array(<要启用的标志列表>));来完成的。

请参阅tests/DebugOutTest.php以获取示例代码。

示例输出

默认

--> outputPage
    --> outputHeader
        --> outputNav(header)
            Adding to nav: Home
            Adding to nav: About
            Excluding from nav: History
            Excluding from nav: Executives
            Excluding from nav: Careers
            Adding to nav: Contact
            Adding to nav: Help
        <-- outputNav(header)
    <-- outputHeader
    --> outputBody
        --> outputSidebar
            --> outputNav(sidebar)
                Excluding from nav: Home
                Adding to nav: About
                Adding to nav: History
                Adding to nav: Executives
                Adding to nav: Careers
                Excluding from nav: Contact
                Adding to nav: Help
            <-- outputNav(sidebar)
        <-- outputSidebar
    <-- outputBody
    --> outputFooter
    <-- outputFooter
<-- outputPage

管道

--> outputPage
 |  --> outputHeader
 |   |  --> outputNav(header)
 |   |   |  Adding to nav: Home
 |   |   |  Adding to nav: About
 |   |   |  Excluding from nav: History
 |   |   |  Excluding from nav: Executives
 |   |   |  Excluding from nav: Careers
 |   |   |  Adding to nav: Contact
 |   |   |  Adding to nav: Help
 |   |  <-- outputNav(header)
 |  <-- outputHeader
 |  --> outputBody
 |   |  --> outputSidebar
 |   |   |  --> outputNav(sidebar)
 |   |   |   |  Excluding from nav: Home
 |   |   |   |  Adding to nav: About
 |   |   |   |  Adding to nav: History
 |   |   |   |  Adding to nav: Executives
 |   |   |   |  Adding to nav: Careers
 |   |   |   |  Excluding from nav: Contact
 |   |   |   |  Adding to nav: Help
 |   |   |  <-- outputNav(sidebar)
 |   |  <-- outputSidebar
 |  <-- outputBody
 |  --> outputFooter
 |  <-- outputFooter
<-- outputPage

简短

->outputPage
  ->outputHeader
    ->outputNav(header)
      Adding to nav: Home
      Adding to nav: About
      Excluding from nav: History
      Excluding from nav: Executives
      Excluding from nav: Careers
      Adding to nav: Contact
      Adding to nav: Help
    <-outputNav(header)
  <-outputHeader
  ->outputBody
    ->outputSidebar
      ->outputNav(sidebar)
        Excluding from nav: Home
        Adding to nav: About
        Adding to nav: History
        Adding to nav: Executives
        Adding to nav: Careers
        Excluding from nav: Contact
        Adding to nav: Help
      <-outputNav(sidebar)
    <-outputSidebar
  <-outputBody
  ->outputFooter
  <-outputFooter
<-outputPage

遵循的标准

此项目遵循PSR 1、2和4。它还通过Packagist设置为与Composer一起使用。它使用PHPUnit进行一些基本的自动化测试。

缺点/未来计划

它不遵循PSR-3,尽管我预计它应该或至少可以。它也可能是一个Monolog扩展

可能最明显的是,它目前使用error_log调用进行日志记录,这似乎是错误的。不确定最好的解决方案是什么——也许重构为Monolog扩展可以解决这个问题。