Мне действительно нравится использовать компонент Symfony VarDumper
, особенно в сочетании с командой server:dump
.
Но иногда команда server:dump
слишком многословна, например, когда много коротких данных должен быть сброшен повторно:
Текущий вывод:
[OK] Server listening on tcp://127.0.0.1:9912
// Quit the server with CONTROL-C.
$ bin/console z
---------------
-------- ---------------------------------
date Fri, 06 Mar 2020 19:59:04 +0000
source ZCommand.php on line 22
file src/Command/ZCommand.php
-------- ---------------------------------
"test 1"
-------- ---------------------------------
date Fri, 06 Mar 2020 19:59:04 +0000
source ZCommand.php on line 23
file src/Command/ZCommand.php
-------- ---------------------------------
"test 2"
7 строк контекста используются здесь для каждого dump()
вызова и 2 дополнительных строки за запрос.
Ожидаемый вывод:
[OK] Server listening on tcp://127.0.0.1:9912
// Quit the server with CONTROL-C.
"test 1"
"test 2"
Поэтому я хотел бы иметь возможность отключить вывод контекста дампа (выполненная команда / URL-запрос + дата / исходный файл). ). После некоторых поисков я наконец нашел решение, но оно кажется немного утомительным по сравнению с необходимостью.
Мое решение (создать новую реализацию DumpDescriptorInterface
):
src / Service / BasicCliDescriptor. php:
<?php
namespace App\Service;
use Symfony\Component\VarDumper\Cloner\Data;
use Symfony\Component\VarDumper\Command\Descriptor\DumpDescriptorInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\VarDumper\Dumper\CliDumper;
/**
* Class BasicCliDescriptor
*/
class BasicCliDescriptor implements DumpDescriptorInterface
{
/**
* @var CliDumper
*/
protected $dumper;
/**
* @param CliDumper $dumper Dumper
*/
public function __construct(CliDumper $dumper)
{
$this->dumper = $dumper;
}
/**
* @param OutputInterface $output Output
* @param Data $data Data
* @param array $context Context
* @param int $clientId Client id
*
* @return void
*/
public function describe(OutputInterface $output, Data $data, array $context, int $clientId): void
{
$this->dumper->dump($data);
}
}
config / services.yaml :
services:
[...]
var_dumper.command.server_dump:
class: Symfony\Component\VarDumper\Command\ServerDumpCommand
arguments:
- '@var_dumper.dump_server'
- { basic: '@basic_cli_descriptor' }
basic_cli_descriptor:
class: App\Service\BasicCliDescriptor
arguments:
- '@var_dumper.contextualized_cli_dumper.inner'
И, наконец, с помощью команды server:dump
например:
$ bin/console server:dump --format=basic
Вопрос:
Есть ли способ сделать это проще, например, без создания новой реализации DumpDescriptorInterface
, или, возможно, путем сокращения конфигурации?