*
* @author Fabien Potencier <fabien@symfony.com>
*/
-abstract class Input implements InputInterface
+abstract class Input implements InputInterface, StreamableInputInterface
{
- /**
- * @var InputDefinition
- */
protected $definition;
+ protected $stream;
protected $options = array();
protected $arguments = array();
protected $interactive = true;
- /**
- * Constructor.
- *
- * @param InputDefinition|null $definition A InputDefinition instance
- */
public function __construct(InputDefinition $definition = null)
{
if (null === $definition) {
return !array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired();
});
- if (count($missingArguments) > 0) {
+ if (\count($missingArguments) > 0) {
throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments)));
}
}
throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
}
- return isset($this->options[$name]) ? $this->options[$name] : $this->definition->getOption($name)->getDefault();
+ return array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault();
}
/**
{
return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token);
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setStream($stream)
+ {
+ $this->stream = $stream;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getStream()
+ {
+ return $this->stream;
+ }
}