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

InputOption.php

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 5.87 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\LogicException;
016   
017  /**
018   * Represents a command line option.
019   *
020   * @author Fabien Potencier <fabien@symfony.com>
021   */
022  class InputOption
023  {
024      const VALUE_NONE = 1;
025      const VALUE_REQUIRED = 2;
026      const VALUE_OPTIONAL = 4;
027      const VALUE_IS_ARRAY = 8;
028   
029      private $name;
030      private $shortcut;
031      private $mode;
032      private $default;
033      private $description;
034   
035      /**
036       * Constructor.
037       *
038       * @param string       $name        The option name
039       * @param string|array $shortcut    The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
040       * @param int          $mode        The option mode: One of the VALUE_* constants
041       * @param string       $description A description text
042       * @param mixed        $default     The default value (must be null for self::VALUE_NONE)
043       *
044       * @throws InvalidArgumentException If option mode is invalid or incompatible
045       */
046      public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null)
047      {
048          if (0 === strpos($name, '--')) {
049              $name = substr($name, 2);
050          }
051   
052          if (empty($name)) {
053              throw new InvalidArgumentException('An option name cannot be empty.');
054          }
055   
056          if (empty($shortcut)) {
057              $shortcut = null;
058          }
059   
060          if (null !== $shortcut) {
061              if (is_array($shortcut)) {
062                  $shortcut = implode('|', $shortcut);
063              }
064              $shortcuts = preg_split('{(\|)-?}', ltrim($shortcut, '-'));
065              $shortcuts = array_filter($shortcuts);
066              $shortcut = implode('|', $shortcuts);
067   
068              if (empty($shortcut)) {
069                  throw new InvalidArgumentException('An option shortcut cannot be empty.');
070              }
071          }
072   
073          if (null === $mode) {
074              $mode = self::VALUE_NONE;
075          } elseif (!is_int($mode) || $mode > 15 || $mode < 1) {
076              throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode));
077          }
078   
079          $this->name = $name;
080          $this->shortcut = $shortcut;
081          $this->mode = $mode;
082          $this->description = $description;
083   
084          if ($this->isArray() && !$this->acceptValue()) {
085              throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.');
086          }
087   
088          $this->setDefault($default);
089      }
090   
091      /**
092       * Returns the option shortcut.
093       *
094       * @return string The shortcut
095       */
096      public function getShortcut()
097      {
098          return $this->shortcut;
099      }
100   
101      /**
102       * Returns the option name.
103       *
104       * @return string The name
105       */
106      public function getName()
107      {
108          return $this->name;
109      }
110   
111      /**
112       * Returns true if the option accepts a value.
113       *
114       * @return bool true if value mode is not self::VALUE_NONE, false otherwise
115       */
116      public function acceptValue()
117      {
118          return $this->isValueRequired() || $this->isValueOptional();
119      }
120   
121      /**
122       * Returns true if the option requires a value.
123       *
124       * @return bool true if value mode is self::VALUE_REQUIRED, false otherwise
125       */
126      public function isValueRequired()
127      {
128          return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode);
129      }
130   
131      /**
132       * Returns true if the option takes an optional value.
133       *
134       * @return bool true if value mode is self::VALUE_OPTIONAL, false otherwise
135       */
136      public function isValueOptional()
137      {
138          return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode);
139      }
140   
141      /**
142       * Returns true if the option can take multiple values.
143       *
144       * @return bool true if mode is self::VALUE_IS_ARRAY, false otherwise
145       */
146      public function isArray()
147      {
148          return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode);
149      }
150   
151      /**
152       * Sets the default value.
153       *
154       * @param mixed $default The default value
155       *
156       * @throws LogicException When incorrect default value is given
157       */
158      public function setDefault($default = null)
159      {
160          if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) {
161              throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.');
162          }
163   
164          if ($this->isArray()) {
165              if (null === $default) {
166                  $default = array();
167              } elseif (!is_array($default)) {
168                  throw new LogicException('A default value for an array option must be an array.');
169              }
170          }
171   
172          $this->default = $this->acceptValue() ? $default : false;
173      }
174   
175      /**
176       * Returns the default value.
177       *
178       * @return mixed The default value
179       */
180      public function getDefault()
181      {
182          return $this->default;
183      }
184   
185      /**
186       * Returns the description text.
187       *
188       * @return string The description text
189       */
190      public function getDescription()
191      {
192          return $this->description;
193      }
194   
195      /**
196       * Checks whether the given option equals this one.
197       *
198       * @param InputOption $option option to compare
199       *
200       * @return bool
201       */
202      public function equals(InputOption $option)
203      {
204          return $option->getName() === $this->getName()
205              && $option->getShortcut() === $this->getShortcut()
206              && $option->getDefault() === $this->getDefault()
207              && $option->isArray() === $this->isArray()
208              && $option->isValueRequired() === $this->isValueRequired()
209              && $option->isValueOptional() === $this->isValueOptional()
210          ;
211      }
212  }
213