artisan 的修补功能几乎完全基于 psysh
见:https://github.com/bobthecow/psysh/
还有:https://psysh.org/
在 psysh 内部是一个名为 dump 的命令,dump 是 symfony 的 var-dumper 的一种实现,是一种较新的 var_dump。
dump -h
显示:
用法:转储[--depth DEPTH] [-a|--all] [--]
参数:target 要转储的目标对象或原语。
选项:--depth 解析深度。 (默认: 10) --all (-a) 包括
私有和受保护的方法和属性。
帮助:转储一个对象或原语。这就像 var_dump 但方式
更棒的。例如
>>>转储$_
>>> 转储 $someVar
>>> 转储 $stuff->getAll()
对于我自己来说,使用参数 --depth 并不满足我的对象,它也相当大。所以我们看到 psysh 依赖于 symfony 的 var-dumper。
见:https://github.com/symfony/var-dumper
还有:https://symfony.com/doc/current/components/var_dumper.html
高级部分说明
dump() 函数只是一个简单的包装器和更方便的方法
调用 VarDumper::dump()。您可以更改此行为
通过调用 VarDumper::setHandler($callable) 函数。调用 dump()
然后将被转发到 $callable。
通过添加处理程序,您可以自定义克隆器、转储器和
脚轮...
克隆器用于创建任何 PHP 的中间表示
多变的。它的输出是 Symfony\Component\VarDumper\Cloner\Data
包装此表示的对象...
克隆器在创建表示时会应用限制,因此
只能表示克隆变量的子集。打电话之前
cloneVar(),你可以配置这些限制:
setMaxItems()
配置将被克隆的项目的最大数量超过最小嵌套深度。使用广度优先计算项目
算法使得较低级别的项目具有比深度更高的优先级
嵌套项目。指定 -1 会删除限制。 setMinDepth()
配置我们保证克隆所有项目的最小树深度。达到此深度后,仅设置 MaxItems 个项
将被克隆。默认值为1,与older一致
Symfony 版本。设置最大字符串()
配置在剪切过长字符串之前将克隆的最大字符数。指定 -1 会移除限制。
见:https://symfony.com/doc/current/components/var_dumper/advanced.html
所以我正在做的是在名为 VarDumpFull 的应用程序中创建一个文件夹,然后将以下代码添加到文件 /app/VarDumpFull/VarDumpFull.php 中
<?php
namespace App\VarDumpFull;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
class VarDumpFull
{
public function __construct($var)
{
$cloner = new VarCloner();
$dumper = new CliDumper();
$cloner->setMaxItems(-1);
$cloner->setMaxString(-1);
$dumper->dump($cloner->cloneVar($var));
}
}
你可以像这样轻松地运行它:
new VarDumpFull($variable_to_be_dumped);
记得跑来更新你的课程。
composer dump-autoload