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() 配置我们保证克隆所有项目的最小树深度。达到此深度后,只会克隆 setMaxItems 个项目。默认值为 1,这与旧的 Symfony 版本一致。setMaxString() 配置在剪切过长字符串之前将克隆的最大字符数。指定 -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