gpt4 book ai didi

没有 OutputInterface 的 Symfony2 控制台输出

转载 作者:行者123 更新时间:2023-12-04 17:36:02 24 4
gpt4 key购买 nike

我正在尝试在 Symfony 控制台命令中将一些信息打印到控制台。通常你会做这样的事情:

protected function execute(InputInterface $input, OutputInterface $output)
{
$name = $input->getArgument('name');
if ($name) {
$text = 'Hello '.$name;
} else {
$text = 'Hello';
}

if ($input->getOption('yell')) {
$text = strtoupper($text);
}

$output->writeln($text);
}

For the full Code of the Example - Symfony Documentation

不幸的是,我无法访问 OutputInterface .是否可以将消息打印到控制台?

不幸的是我不能通过 OutputInterface到我想打印一些输出的类。

最佳答案

了解定时调试的问题,可以随时用echo打印调试信息或 var_dump
如果你打算使用一个没有 Symfony 应用程序的命令和全局调试消息,这里有一种方法可以做到这一点。

Symfony 提供 3 种不同的 OutputInterface

  • NullOutput - 将导致根本没有输出并保持命令安静
  • ConsoleOutput - 将导致控制台消息
  • StreamOutput - 将导致将消息打印到给定的流

  • 调试到文件

    这样做,无论何时您调用 $output->writeln()在你的命令中,它会在 /path/to/debug/file.log 中写一个新行
    use Symfony\Component\Console\Output\StreamOutput;
    use Symfony\Component\Console\Input\ArrayInput;
    use Acme\FooBundle\Command\MyCommand;

    $params = array();
    $input = new ArrayInput($params);

    $file = '/path/to/debug/file.log';
    $handle = fopen($file, 'w+');
    $output = new StreamOutput($handle);

    $command = new MyCommand;
    $command->run($input, $output);

    fclose($handle);

    在控制台中调试

    除了您使用 ConsoleOutput 之外,这是相同的过程。反而
    use Symfony\Component\Console\Output\ConsoleOutput;
    use Symfony\Component\Console\Input\ArrayInput;
    use Acme\FooBundle\Command\MyCommand;

    $params = array();
    $input = new ArrayInput($params);

    $output = new ConsoleOutput();

    $command = new MyCommand;
    $command->run($input, $output);

    无需调试

    不会打印任何消息
    use Symfony\Component\Console\Output\NullOutput;
    use Symfony\Component\Console\Input\ArrayInput;
    use Acme\FooBundle\Command\MyCommand;

    $params = array();
    $input = new ArrayInput($params);

    $output = new NullOutput();

    $command = new MyCommand;
    $command->run($input, $output);

    关于没有 OutputInterface 的 Symfony2 控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237519/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com