| Viewing file:  Output.php (4.06 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?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>
 *
 * @api
 */
 abstract class Output implements OutputInterface
 {
 private $verbosity;
 private $formatter;
 
 /**
 * Constructor.
 *
 * @param integer                       $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
 * @param Boolean                       $decorated Whether to decorate messages
 * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter)
 *
 * @api
 */
 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 Boolean $newline Whether to add a newline or not
 */
 abstract protected function doWrite($message, $newline);
 }
 
 |