kafoso/tools

各种PHP工具。

3.0.1 2017-09-19 10:04 UTC

This package is auto-updated.

Last update: 2024-09-08 06:42:23 UTC


README

各种通用的PHP工具。

根据需要扩展。

Kafoso\Tools\Debug\Dumper

PHP基本var_dump方法的改进版。其展示方式更接近遵循PSR-1PSR-2的PHP类。然而,为了可读性,并节省宝贵的空间,以避免眩晕1,使用2个空格的缩进,而不是4个

优雅地处理递归,并限制对象和数组的深度(默认:3),省略超出最大期望深度的内容。

特别适用于处理非常大的对象和包含重复或递归信息的数组。例如,数据库内容,这些内容已经被映射到具有(有时)复杂关系的PHP类中。这种映射可以通过PDO、mysqli、Doctrine和其他DBAL或ORM工具执行。

示例输出

一个简单的类,具有id、父子关系和静态变量$list

  • 完全限定的类名和SPL散列
    每个类都会打印出其唯一的SPL散列标识符。这有助于找到递归,它偶然被表示为*RECURSION*
  • *RECURSION*
    请注意,父级下的对象实例000000005e85475000007fd972cdb06b没有被重新打印,因为它与第一个类相同。
  • (数组值被省略)
    请注意,两个类之间的$list变量在视觉上有所不同?虽然它们确实是相同的,但是dumper已经达到了其最大深度级别,因此省略了父级$list变量的一部分。对于对象,也存在等效的(Object value omitted)

试试:php examples/DebugDumperExample.php

作为纯文本

以下是通过使用Kafoso\Tools\Debug\Dumper::dump($myLittleClass)生成的,它以纯文本形式(使用Kafoso\Tools\Debug\Dumper\PlainTextFormatter)展示内容。

My\Little_Class Object #
{
  private $id = int(42);
  protected $parent = My\Little_Class Object #
  {
    private $id = int(41);
    protected $parent = NULL;
    protected $children = array(1) {
      [0] => My\Little_Class Object #
      {
        *RECURSION*
      },
    }
    public static $list = array(3) {
      [0] => string(3) "foo",
      [1] => string(3) "bar",
      [2] => array(1) {
        (Array value omitted)
      }
    }
  }
  protected $children = array(0) {
  }
  public static $list = array(3) {
    [0] => string(3) "foo",
    [1] => string(3) "bar",
    [2] => array(1) {
      [0] => string(3) "baz"
    }
  }
}

作为JSON

与前一个纯文本示例相同的输入,但这次使用Kafoso\Tools\Debug\Dumper::dumpJson($myLittleClass)

JSON_PRETTY_PRINT默认启用,因为这是用于调试目的,但可以根据需要禁用。例如,当从JavaScript中的XHR检索JSON时,缩进并不重要。

与纯文本相比,JSON视图包含的信息较少。例如,没有类变量曝光信息(staticpublicprotectedprivate);然而,类变量名称和值确实出现。此外,以下对象键是侵入性的,并会改变结果JavaScript对象的结构。

  • Kafoso\\Tools\\Debug\\Dumper|CLASS
  • Kafoso\\Tools\\Debug\\Dumper|RECURSION
  • Kafoso\\Tools\\Debug\\Dumper|ARRAY_VALUE_OMITTED
  • Kafoso\\Tools\\Debug\\Dumper|OBJECT_VALUE_OMITTED

然而,Dumper毕竟是为了调试目的,应该这样使用。

{
    "Kafoso\\Tools\\Debug\\Dumper|CLASS": "My\\Little_Class Object #",
    "id": 42,
    "parent": {
        "Kafoso\\Tools\\Debug\\Dumper|CLASS": "My\\Little_Class Object #",
        "id": 41,
        "parent": null,
        "children": [
            {
                "Kafoso\\Tools\\Debug\\Dumper|CLASS": "My\\Little_Class Object #",
                "Kafoso\\Tools\\Debug\\Dumper|RECURSION": "*RECURSION*"
            }
        ],
        "list": [
            "foo",
            "bar",
            {
                "Kafoso\\Tools\\Debug\\Dumper|ARRAY_VALUE_OMITTED": "(Array value omitted; array(1))"
            }
        ]
    },
    "children": [],
    "list": [
        "foo",
        "bar",
        [
            "baz"
        ]
    ]
}

作为HTML

用法

<?php
Kafoso\Tools\Debug\Dumper::dumpHtml($myLittleClass)

HTML dumper非常适合以美观、高亮的方式显示变量。

类被显示为具有继承、特质、常量、变量和方法接口的伪对象;“伪对象”意味着值以对象当前包含的快照显示。

存在各种选项,这些选项存储在cookie中。

显示和隐藏部分的选项包括

  • 扩展父类。
  • 接口。
  • 特质。
  • 常量。
  • 类变量。
  • 方法。
  • 方法参数。
  • 方法参数类型提示。

其中一个选项“截断泛型对象”,允许您将类似\DateTime的对象显示为字符串,提供更好的概览并节省宝贵空间。

请注意,强制实施最大深度限制,默认为3。这个数字可以通过作为第二个变量传递来更改,例如。

<?php
Kafoso\Tools\Debug\Dumper::dumpHtml($myLittleClass, 10)

此行为与纯文本和JSON渲染方法相同。

示例输出

HtmlFormatter-dump-example.jpg

主题“dark-one-ui”由Atom 编辑器提供。

脚注

1 Vertigo:代码中的大量嵌套缩进,通常由嵌套条件和循环产生,导致可读性降低。