Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Input.php

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 4.75 KiB


001  <?php
002   
003  /*
004   * This file is part of the Symfony package.
005   *
006   * (c) Fabien Potencier <fabien@symfony.com>
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  namespace Symfony\Component\Console\Input;
013   
014  use Symfony\Component\Console\Exception\InvalidArgumentException;
015  use Symfony\Component\Console\Exception\RuntimeException;
016   
017  /**
018   * Input is the base class for all concrete Input classes.
019   *
020   * Three concrete classes are provided by default:
021   *
022   *  * `ArgvInput`: The input comes from the CLI arguments (argv)
023   *  * `StringInput`: The input is provided as a string
024   *  * `ArrayInput`: The input is provided as an array
025   *
026   * @author Fabien Potencier <fabien@symfony.com>
027   */
028  abstract class Input implements InputInterface
029  {
030      /**
031       * @var InputDefinition
032       */
033      protected $definition;
034      protected $options = array();
035      protected $arguments = array();
036      protected $interactive = true;
037   
038      /**
039       * Constructor.
040       *
041       * @param InputDefinition|null $definition A InputDefinition instance
042       */
043      public function __construct(InputDefinition $definition = null)
044      {
045          if (null === $definition) {
046              $this->definition = new InputDefinition();
047          } else {
048              $this->bind($definition);
049              $this->validate();
050          }
051      }
052   
053      /**
054       * {@inheritdoc}
055       */
056      public function bind(InputDefinition $definition)
057      {
058          $this->arguments = array();
059          $this->options = array();
060          $this->definition = $definition;
061   
062          $this->parse();
063      }
064   
065      /**
066       * Processes command line arguments.
067       */
068      abstract protected function parse();
069   
070      /**
071       * {@inheritdoc}
072       */
073      public function validate()
074      {
075          $definition = $this->definition;
076          $givenArguments = $this->arguments;
077   
078          $missingArguments = array_filter(array_keys($definition->getArguments()), function ($argument) use ($definition, $givenArguments) {
079              return !array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired();
080          });
081   
082          if (count($missingArguments) > 0) {
083              throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments)));
084          }
085      }
086   
087      /**
088       * {@inheritdoc}
089       */
090      public function isInteractive()
091      {
092          return $this->interactive;
093      }
094   
095      /**
096       * {@inheritdoc}
097       */
098      public function setInteractive($interactive)
099      {
100          $this->interactive = (bool) $interactive;
101      }
102   
103      /**
104       * {@inheritdoc}
105       */
106      public function getArguments()
107      {
108          return array_merge($this->definition->getArgumentDefaults(), $this->arguments);
109      }
110   
111      /**
112       * {@inheritdoc}
113       */
114      public function getArgument($name)
115      {
116          if (!$this->definition->hasArgument($name)) {
117              throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
118          }
119   
120          return isset($this->arguments[$name]) ? $this->arguments[$name] : $this->definition->getArgument($name)->getDefault();
121      }
122   
123      /**
124       * {@inheritdoc}
125       */
126      public function setArgument($name, $value)
127      {
128          if (!$this->definition->hasArgument($name)) {
129              throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
130          }
131   
132          $this->arguments[$name] = $value;
133      }
134   
135      /**
136       * {@inheritdoc}
137       */
138      public function hasArgument($name)
139      {
140          return $this->definition->hasArgument($name);
141      }
142   
143      /**
144       * {@inheritdoc}
145       */
146      public function getOptions()
147      {
148          return array_merge($this->definition->getOptionDefaults(), $this->options);
149      }
150   
151      /**
152       * {@inheritdoc}
153       */
154      public function getOption($name)
155      {
156          if (!$this->definition->hasOption($name)) {
157              throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
158          }
159   
160          return isset($this->options[$name]) ? $this->options[$name] : $this->definition->getOption($name)->getDefault();
161      }
162   
163      /**
164       * {@inheritdoc}
165       */
166      public function setOption($name, $value)
167      {
168          if (!$this->definition->hasOption($name)) {
169              throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
170          }
171   
172          $this->options[$name] = $value;
173      }
174   
175      /**
176       * {@inheritdoc}
177       */
178      public function hasOption($name)
179      {
180          return $this->definition->hasOption($name);
181      }
182   
183      /**
184       * Escapes a token through escapeshellarg if it contains unsafe chars.
185       *
186       * @param string $token
187       *
188       * @return string
189       */
190      public function escapeToken($token)
191      {
192          return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token);
193      }
194  }
195