You are here

Output.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/symfony/console/Output/Output.php

File

vendor/symfony/console/Output/Output.php
View source
<?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\Formatter\OutputFormatter;

/**
 * Base class for output classes.
 *
 * There are five levels of verbosity:
 *
 *  * normal: no option passed (normal output)
 *  * verbose: -v (more output)
 *  * very verbose: -vv (highly extended output)
 *  * debug: -vvv (all debug output)
 *  * quiet: -q (no output)
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
abstract class Output implements OutputInterface {
  private $verbosity;
  private $formatter;

  /**
   * Constructor.
   *
   * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
   * @param bool                          $decorated Whether to decorate messages
   * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter)
   */
  public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = false, OutputFormatterInterface $formatter = null) {
    $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity;
    $this->formatter = $formatter ?: new OutputFormatter();
    $this->formatter
      ->setDecorated($decorated);
  }

  /**
   * {@inheritdoc}
   */
  public function setFormatter(OutputFormatterInterface $formatter) {
    $this->formatter = $formatter;
  }

  /**
   * {@inheritdoc}
   */
  public function getFormatter() {
    return $this->formatter;
  }

  /**
   * {@inheritdoc}
   */
  public function setDecorated($decorated) {
    $this->formatter
      ->setDecorated($decorated);
  }

  /**
   * {@inheritdoc}
   */
  public function isDecorated() {
    return $this->formatter
      ->isDecorated();
  }

  /**
   * {@inheritdoc}
   */
  public function setVerbosity($level) {
    $this->verbosity = (int) $level;
  }

  /**
   * {@inheritdoc}
   */
  public function getVerbosity() {
    return $this->verbosity;
  }
  public function isQuiet() {
    return self::VERBOSITY_QUIET === $this->verbosity;
  }
  public function isVerbose() {
    return self::VERBOSITY_VERBOSE <= $this->verbosity;
  }
  public function isVeryVerbose() {
    return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity;
  }
  public function isDebug() {
    return self::VERBOSITY_DEBUG <= $this->verbosity;
  }

  /**
   * {@inheritdoc}
   */
  public function writeln($messages, $type = self::OUTPUT_NORMAL) {
    $this
      ->write($messages, true, $type);
  }

  /**
   * {@inheritdoc}
   */
  public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL) {
    if (self::VERBOSITY_QUIET === $this->verbosity) {
      return;
    }
    $messages = (array) $messages;
    foreach ($messages as $message) {
      switch ($type) {
        case OutputInterface::OUTPUT_NORMAL:
          $message = $this->formatter
            ->format($message);
          break;
        case OutputInterface::OUTPUT_RAW:
          break;
        case OutputInterface::OUTPUT_PLAIN:
          $message = strip_tags($this->formatter
            ->format($message));
          break;
        default:
          throw new \InvalidArgumentException(sprintf('Unknown output type given (%s)', $type));
      }
      $this
        ->doWrite($message, $newline);
    }
  }

  /**
   * Writes a message to the output.
   *
   * @param string $message A message to write to the output
   * @param bool   $newline Whether to add a newline or not
   */
  protected abstract function doWrite($message, $newline);

}

Classes

Namesort descending Description
Output Base class for output classes.