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 |
ArrayInput.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 * ArrayInput represents an input provided as an array.
016 *
017 * Usage:
018 *
019 * $input = new ArrayInput(array('name' => 'foo', '--bar' => 'foobar'));
020 *
021 * @author Fabien Potencier <fabien@symfony.com>
022 *
023 * @api
024 */
025 class ArrayInput extends Input
026 {
027 private $parameters;
028
029 /**
030 * Constructor.
031 *
032 * @param array $parameters An array of parameters
033 * @param InputDefinition $definition A InputDefinition instance
034 *
035 * @api
036 */
037 public function __construct(array $parameters, InputDefinition $definition = null)
038 {
039 $this->parameters = $parameters;
040
041 parent::__construct($definition);
042 }
043
044 /**
045 * Returns the first argument from the raw parameters (not parsed).
046 *
047 * @return string The value of the first argument or null otherwise
048 */
049 public function getFirstArgument()
050 {
051 foreach ($this->parameters as $key => $value) {
052 if ($key && '-' === $key[0]) {
053 continue;
054 }
055
056 return $value;
057 }
058 }
059
060 /**
061 * Returns true if the raw parameters (not parsed) contain a value.
062 *
063 * This method is to be used to introspect the input parameters
064 * before they have been validated. It must be used carefully.
065 *
066 * @param string|array $values The values to look for in the raw parameters (can be an array)
067 *
068 * @return bool true if the value is contained in the raw parameters
069 */
070 public function hasParameterOption($values)
071 {
072 $values = (array) $values;
073
074 foreach ($this->parameters as $k => $v) {
075 if (!is_int($k)) {
076 $v = $k;
077 }
078
079 if (in_array($v, $values)) {
080 return true;
081 }
082 }
083
084 return false;
085 }
086
087 /**
088 * Returns the value of a raw option (not parsed).
089 *
090 * This method is to be used to introspect the input parameters
091 * before they have been validated. It must be used carefully.
092 *
093 * @param string|array $values The value(s) to look for in the raw parameters (can be an array)
094 * @param mixed $default The default value to return if no result is found
095 *
096 * @return mixed The option value
097 */
098 public function getParameterOption($values, $default = false)
099 {
100 $values = (array) $values;
101
102 foreach ($this->parameters as $k => $v) {
103 if (is_int($k) && in_array($v, $values)) {
104 return true;
105 } elseif (in_array($k, $values)) {
106 return $v;
107 }
108 }
109
110 return $default;
111 }
112
113 /**
114 * Returns a stringified representation of the args passed to the command
115 *
116 * @return string
117 */
118 public function __toString()
119 {
120 $params = array();
121 foreach ($this->parameters as $param => $val) {
122 if ($param && '-' === $param[0]) {
123 $params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
124 } else {
125 $params[] = $this->escapeToken($val);
126 }
127 }
128
129 return implode(' ', $params);
130 }
131
132 /**
133 * Processes command line arguments.
134 */
135 protected function parse()
136 {
137 foreach ($this->parameters as $key => $value) {
138 if (0 === strpos($key, '--')) {
139 $this->addLongOption(substr($key, 2), $value);
140 } elseif ('-' === $key[0]) {
141 $this->addShortOption(substr($key, 1), $value);
142 } else {
143 $this->addArgument($key, $value);
144 }
145 }
146 }
147
148 /**
149 * Adds a short option value.
150 *
151 * @param string $shortcut The short option key
152 * @param mixed $value The value for the option
153 *
154 * @throws \InvalidArgumentException When option given doesn't exist
155 */
156 private function addShortOption($shortcut, $value)
157 {
158 if (!$this->definition->hasShortcut($shortcut)) {
159 throw new \InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut));
160 }
161
162 $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value);
163 }
164
165 /**
166 * Adds a long option value.
167 *
168 * @param string $name The long option key
169 * @param mixed $value The value for the option
170 *
171 * @throws \InvalidArgumentException When option given doesn't exist
172 * @throws \InvalidArgumentException When a required value is missing
173 */
174 private function addLongOption($name, $value)
175 {
176 if (!$this->definition->hasOption($name)) {
177 throw new \InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name));
178 }
179
180 $option = $this->definition->getOption($name);
181
182 if (null === $value) {
183 if ($option->isValueRequired()) {
184 throw new \InvalidArgumentException(sprintf('The "--%s" option requires a value.', $name));
185 }
186
187 $value = $option->isValueOptional() ? $option->getDefault() : true;
188 }
189
190 $this->options[$name] = $value;
191 }
192
193 /**
194 * Adds an argument value.
195 *
196 * @param string $name The argument name
197 * @param mixed $value The value for the argument
198 *
199 * @throws \InvalidArgumentException When argument given doesn't exist
200 */
201 private function addArgument($name, $value)
202 {
203 if (!$this->definition->hasArgument($name)) {
204 throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
205 }
206
207 $this->arguments[$name] = $value;
208 }
209 }
210