kafoso / tools
各种PHP工具。
Requires
- php: >=5.5.0
- moontoast/math: ^1.1
- ramsey/uuid: ^3.7
Requires (Dev)
- phpunit/phpunit: ^4.8
README
各种通用的PHP工具。
根据需要扩展。
Kafoso\Tools\Debug\Dumper
PHP基本var_dump
方法的改进版。其展示方式更接近遵循PSR-1和PSR-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视图包含的信息较少。例如,没有类变量曝光信息(static
、public
、protected
、private
);然而,类变量名称和值确实出现。此外,以下对象键是侵入性的,并会改变结果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渲染方法相同。
示例输出
主题“dark-one-ui”由Atom 编辑器提供。