Verzeichnisstruktur phpBB-3.1.0
- Veröffentlicht
- 27.10.2014
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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
Input.php
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 /**
015 * Input is the base class for all concrete Input classes.
016 *
017 * Three concrete classes are provided by default:
018 *
019 * * `ArgvInput`: The input comes from the CLI arguments (argv)
020 * * `StringInput`: The input is provided as a string
021 * * `ArrayInput`: The input is provided as an array
022 *
023 * @author Fabien Potencier <fabien@symfony.com>
024 */
025 abstract class Input implements InputInterface
026 {
027 protected $definition;
028 protected $options;
029 protected $arguments;
030 protected $interactive = true;
031
032 /**
033 * Constructor.
034 *
035 * @param InputDefinition $definition A InputDefinition instance
036 */
037 public function __construct(InputDefinition $definition = null)
038 {
039 if (null === $definition) {
040 $this->arguments = array();
041 $this->options = array();
042 $this->definition = new InputDefinition();
043 } else {
044 $this->bind($definition);
045 $this->validate();
046 }
047 }
048
049 /**
050 * Binds the current Input instance with the given arguments and options.
051 *
052 * @param InputDefinition $definition A InputDefinition instance
053 */
054 public function bind(InputDefinition $definition)
055 {
056 $this->arguments = array();
057 $this->options = array();
058 $this->definition = $definition;
059
060 $this->parse();
061 }
062
063 /**
064 * Processes command line arguments.
065 */
066 abstract protected function parse();
067
068 /**
069 * Validates the input.
070 *
071 * @throws \RuntimeException When not enough arguments are given
072 */
073 public function validate()
074 {
075 if (count($this->arguments) < $this->definition->getArgumentRequiredCount()) {
076 throw new \RuntimeException('Not enough arguments.');
077 }
078 }
079
080 /**
081 * Checks if the input is interactive.
082 *
083 * @return bool Returns true if the input is interactive
084 */
085 public function isInteractive()
086 {
087 return $this->interactive;
088 }
089
090 /**
091 * Sets the input interactivity.
092 *
093 * @param bool $interactive If the input should be interactive
094 */
095 public function setInteractive($interactive)
096 {
097 $this->interactive = (bool) $interactive;
098 }
099
100 /**
101 * Returns the argument values.
102 *
103 * @return array An array of argument values
104 */
105 public function getArguments()
106 {
107 return array_merge($this->definition->getArgumentDefaults(), $this->arguments);
108 }
109
110 /**
111 * Returns the argument value for a given argument name.
112 *
113 * @param string $name The argument name
114 *
115 * @return mixed The argument value
116 *
117 * @throws \InvalidArgumentException When argument given doesn't exist
118 */
119 public function getArgument($name)
120 {
121 if (!$this->definition->hasArgument($name)) {
122 throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
123 }
124
125 return isset($this->arguments[$name]) ? $this->arguments[$name] : $this->definition->getArgument($name)->getDefault();
126 }
127
128 /**
129 * Sets an argument value by name.
130 *
131 * @param string $name The argument name
132 * @param string $value The argument value
133 *
134 * @throws \InvalidArgumentException When argument given doesn't exist
135 */
136 public function setArgument($name, $value)
137 {
138 if (!$this->definition->hasArgument($name)) {
139 throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
140 }
141
142 $this->arguments[$name] = $value;
143 }
144
145 /**
146 * Returns true if an InputArgument object exists by name or position.
147 *
148 * @param string|int $name The InputArgument name or position
149 *
150 * @return bool true if the InputArgument object exists, false otherwise
151 */
152 public function hasArgument($name)
153 {
154 return $this->definition->hasArgument($name);
155 }
156
157 /**
158 * Returns the options values.
159 *
160 * @return array An array of option values
161 */
162 public function getOptions()
163 {
164 return array_merge($this->definition->getOptionDefaults(), $this->options);
165 }
166
167 /**
168 * Returns the option value for a given option name.
169 *
170 * @param string $name The option name
171 *
172 * @return mixed The option value
173 *
174 * @throws \InvalidArgumentException When option given doesn't exist
175 */
176 public function getOption($name)
177 {
178 if (!$this->definition->hasOption($name)) {
179 throw new \InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
180 }
181
182 return isset($this->options[$name]) ? $this->options[$name] : $this->definition->getOption($name)->getDefault();
183 }
184
185 /**
186 * Sets an option value by name.
187 *
188 * @param string $name The option name
189 * @param string|bool $value The option value
190 *
191 * @throws \InvalidArgumentException When option given doesn't exist
192 */
193 public function setOption($name, $value)
194 {
195 if (!$this->definition->hasOption($name)) {
196 throw new \InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
197 }
198
199 $this->options[$name] = $value;
200 }
201
202 /**
203 * Returns true if an InputOption object exists by name.
204 *
205 * @param string $name The InputOption name
206 *
207 * @return bool true if the InputOption object exists, false otherwise
208 */
209 public function hasOption($name)
210 {
211 return $this->definition->hasOption($name);
212 }
213
214 /**
215 * Escapes a token through escapeshellarg if it contains unsafe chars
216 *
217 * @param string $token
218 *
219 * @return string
220 */
221 public function escapeToken($token)
222 {
223 return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token);
224 }
225 }
226