123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Console\Output;
- use Symfony\Component\Console\Formatter\OutputFormatterInterface;
- use Symfony\Component\Console\Output\ConsoleOutputInterface;
- /**
- * ConsoleOutput is the default class for all CLI output. It uses STDOUT.
- *
- * This class is a convenient wrapper around `StreamOutput`.
- *
- * $output = new ConsoleOutput();
- *
- * This is equivalent to:
- *
- * $output = new StreamOutput(fopen('php://stdout', 'w'));
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @api
- */
- class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface
- {
- private $stderr;
- /**
- * Constructor.
- *
- * @param integer $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
- * @param Boolean|null $decorated Whether to decorate messages (null for auto-guessing)
- * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter)
- *
- * @api
- */
- public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null)
- {
- $outputStream = 'php://stdout';
- if (!$this->hasStdoutSupport()) {
- $outputStream = 'php://output';
- }
- parent::__construct(fopen($outputStream, 'w'), $verbosity, $decorated, $formatter);
- $this->stderr = new StreamOutput(fopen('php://stderr', 'w'), $verbosity, $decorated, $formatter);
- }
- /**
- * {@inheritdoc}
- */
- public function setDecorated($decorated)
- {
- parent::setDecorated($decorated);
- $this->stderr->setDecorated($decorated);
- }
- /**
- * {@inheritdoc}
- */
- public function setFormatter(OutputFormatterInterface $formatter)
- {
- parent::setFormatter($formatter);
- $this->stderr->setFormatter($formatter);
- }
- /**
- * {@inheritdoc}
- */
- public function setVerbosity($level)
- {
- parent::setVerbosity($level);
- $this->stderr->setVerbosity($level);
- }
- /**
- * {@inheritdoc}
- */
- public function getErrorOutput()
- {
- return $this->stderr;
- }
- /**
- * {@inheritdoc}
- */
- public function setErrorOutput(OutputInterface $error)
- {
- $this->stderr = $error;
- }
- /**
- * Returns true if current environment supports writing console output to
- * STDOUT.
- *
- * IBM iSeries (OS400) exhibits character-encoding issues when writing to
- * STDOUT and doesn't properly convert ASCII to EBCDIC, resulting in garbage
- * output.
- *
- * @return boolean
- */
- protected function hasStdoutSupport()
- {
- return ('OS400' != php_uname('s'));
- }
- }
|