You are here

class Question in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/console/Question/Question.php \Symfony\Component\Console\Question\Question

Represents a Question.

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

  • class \Symfony\Component\Console\Question\Question

Expanded class hierarchy of Question

4 files declare their use of Question
QuestionHelper.php in vendor/symfony/console/Helper/QuestionHelper.php
QuestionHelperTest.php in vendor/symfony/console/Tests/Helper/QuestionHelperTest.php
SymfonyQuestionHelper.php in vendor/symfony/console/Helper/SymfonyQuestionHelper.php
SymfonyStyle.php in vendor/symfony/console/Style/SymfonyStyle.php

File

vendor/symfony/console/Question/Question.php, line 19

Namespace

Symfony\Component\Console\Question
View source
class Question {
  private $question;
  private $attempts;
  private $hidden = false;
  private $hiddenFallback = true;
  private $autocompleterValues;
  private $validator;
  private $default;
  private $normalizer;

  /**
   * Constructor.
   *
   * @param string $question The question to ask to the user
   * @param mixed  $default  The default answer to return if the user enters nothing
   */
  public function __construct($question, $default = null) {
    $this->question = $question;
    $this->default = $default;
  }

  /**
   * Returns the question.
   *
   * @return string
   */
  public function getQuestion() {
    return $this->question;
  }

  /**
   * Returns the default answer.
   *
   * @return mixed
   */
  public function getDefault() {
    return $this->default;
  }

  /**
   * Returns whether the user response must be hidden.
   *
   * @return bool
   */
  public function isHidden() {
    return $this->hidden;
  }

  /**
   * Sets whether the user response must be hidden or not.
   *
   * @param bool $hidden
   *
   * @return Question The current instance
   *
   * @throws \LogicException In case the autocompleter is also used
   */
  public function setHidden($hidden) {
    if ($this->autocompleterValues) {
      throw new \LogicException('A hidden question cannot use the autocompleter.');
    }
    $this->hidden = (bool) $hidden;
    return $this;
  }

  /**
   * In case the response can not be hidden, whether to fallback on non-hidden question or not.
   *
   * @return bool
   */
  public function isHiddenFallback() {
    return $this->hiddenFallback;
  }

  /**
   * Sets whether to fallback on non-hidden question if the response can not be hidden.
   *
   * @param bool $fallback
   *
   * @return Question The current instance
   */
  public function setHiddenFallback($fallback) {
    $this->hiddenFallback = (bool) $fallback;
    return $this;
  }

  /**
   * Gets values for the autocompleter.
   *
   * @return null|array|\Traversable
   */
  public function getAutocompleterValues() {
    return $this->autocompleterValues;
  }

  /**
   * Sets values for the autocompleter.
   *
   * @param null|array|\Traversable $values
   *
   * @return Question The current instance
   *
   * @throws \InvalidArgumentException
   * @throws \LogicException
   */
  public function setAutocompleterValues($values) {
    if (is_array($values) && $this
      ->isAssoc($values)) {
      $values = array_merge(array_keys($values), array_values($values));
    }
    if (null !== $values && !is_array($values)) {
      if (!$values instanceof \Traversable || $values instanceof \Countable) {
        throw new \InvalidArgumentException('Autocompleter values can be either an array, `null` or an object implementing both `Countable` and `Traversable` interfaces.');
      }
    }
    if ($this->hidden) {
      throw new \LogicException('A hidden question cannot use the autocompleter.');
    }
    $this->autocompleterValues = $values;
    return $this;
  }

  /**
   * Sets a validator for the question.
   *
   * @param null|callable $validator
   *
   * @return Question The current instance
   */
  public function setValidator($validator) {
    $this->validator = $validator;
    return $this;
  }

  /**
   * Gets the validator for the question.
   *
   * @return null|callable
   */
  public function getValidator() {
    return $this->validator;
  }

  /**
   * Sets the maximum number of attempts.
   *
   * Null means an unlimited number of attempts.
   *
   * @param null|int $attempts
   *
   * @return Question The current instance
   *
   * @throws \InvalidArgumentException In case the number of attempts is invalid.
   */
  public function setMaxAttempts($attempts) {
    if (null !== $attempts && $attempts < 1) {
      throw new \InvalidArgumentException('Maximum number of attempts must be a positive value.');
    }
    $this->attempts = $attempts;
    return $this;
  }

  /**
   * Gets the maximum number of attempts.
   *
   * Null means an unlimited number of attempts.
   *
   * @return null|int
   */
  public function getMaxAttempts() {
    return $this->attempts;
  }

  /**
   * Sets a normalizer for the response.
   *
   * The normalizer can be a callable (a string), a closure or a class implementing __invoke.
   *
   * @param callable $normalizer
   *
   * @return Question The current instance
   */
  public function setNormalizer($normalizer) {
    $this->normalizer = $normalizer;
    return $this;
  }

  /**
   * Gets the normalizer for the response.
   *
   * The normalizer can ba a callable (a string), a closure or a class implementing __invoke.
   *
   * @return callable
   */
  public function getNormalizer() {
    return $this->normalizer;
  }
  protected function isAssoc($array) {
    return (bool) count(array_filter(array_keys($array), 'is_string'));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Question::$attempts private property
Question::$autocompleterValues private property
Question::$default private property
Question::$hidden private property
Question::$hiddenFallback private property
Question::$normalizer private property
Question::$question private property
Question::$validator private property
Question::getAutocompleterValues public function Gets values for the autocompleter.
Question::getDefault public function Returns the default answer.
Question::getMaxAttempts public function Gets the maximum number of attempts.
Question::getNormalizer public function Gets the normalizer for the response.
Question::getQuestion public function Returns the question.
Question::getValidator public function Gets the validator for the question.
Question::isAssoc protected function
Question::isHidden public function Returns whether the user response must be hidden.
Question::isHiddenFallback public function In case the response can not be hidden, whether to fallback on non-hidden question or not.
Question::setAutocompleterValues public function Sets values for the autocompleter.
Question::setHidden public function Sets whether the user response must be hidden or not.
Question::setHiddenFallback public function Sets whether to fallback on non-hidden question if the response can not be hidden.
Question::setMaxAttempts public function Sets the maximum number of attempts.
Question::setNormalizer public function Sets a normalizer for the response.
Question::setValidator public function Sets a validator for the question.
Question::__construct public function Constructor. 2