Symfony команда сервера: dump: как скрыть контекстную информацию? - PullRequest
0 голосов
/ 06 марта 2020

Мне действительно нравится использовать компонент 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, или, возможно, путем сокращения конфигурации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...