[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\Console\Descriptor; 13 14 use Symfony\Component\Console\Application; 15 use Symfony\Component\Console\Command\Command; 16 use Symfony\Component\Console\Input\InputArgument; 17 use Symfony\Component\Console\Input\InputDefinition; 18 use Symfony\Component\Console\Input\InputOption; 19 20 /** 21 * JSON descriptor. 22 * 23 * @author Jean-François Simon <contact@jfsimon.fr> 24 * 25 * @internal 26 */ 27 class JsonDescriptor extends Descriptor 28 { 29 /** 30 * {@inheritdoc} 31 */ 32 protected function describeInputArgument(InputArgument $argument, array $options = []) 33 { 34 $this->writeData($this->getInputArgumentData($argument), $options); 35 } 36 37 /** 38 * {@inheritdoc} 39 */ 40 protected function describeInputOption(InputOption $option, array $options = []) 41 { 42 $this->writeData($this->getInputOptionData($option), $options); 43 } 44 45 /** 46 * {@inheritdoc} 47 */ 48 protected function describeInputDefinition(InputDefinition $definition, array $options = []) 49 { 50 $this->writeData($this->getInputDefinitionData($definition), $options); 51 } 52 53 /** 54 * {@inheritdoc} 55 */ 56 protected function describeCommand(Command $command, array $options = []) 57 { 58 $this->writeData($this->getCommandData($command), $options); 59 } 60 61 /** 62 * {@inheritdoc} 63 */ 64 protected function describeApplication(Application $application, array $options = []) 65 { 66 $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null; 67 $description = new ApplicationDescription($application, $describedNamespace, true); 68 $commands = []; 69 70 foreach ($description->getCommands() as $command) { 71 $commands[] = $this->getCommandData($command); 72 } 73 74 $data = []; 75 if ('UNKNOWN' !== $application->getName()) { 76 $data['application']['name'] = $application->getName(); 77 if ('UNKNOWN' !== $application->getVersion()) { 78 $data['application']['version'] = $application->getVersion(); 79 } 80 } 81 82 $data['commands'] = $commands; 83 84 if ($describedNamespace) { 85 $data['namespace'] = $describedNamespace; 86 } else { 87 $data['namespaces'] = array_values($description->getNamespaces()); 88 } 89 90 $this->writeData($data, $options); 91 } 92 93 /** 94 * Writes data as json. 95 */ 96 private function writeData(array $data, array $options) 97 { 98 $flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0; 99 100 $this->write(json_encode($data, $flags)); 101 } 102 103 /** 104 * @return array 105 */ 106 private function getInputArgumentData(InputArgument $argument) 107 { 108 return [ 109 'name' => $argument->getName(), 110 'is_required' => $argument->isRequired(), 111 'is_array' => $argument->isArray(), 112 'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()), 113 'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault(), 114 ]; 115 } 116 117 /** 118 * @return array 119 */ 120 private function getInputOptionData(InputOption $option) 121 { 122 return [ 123 'name' => '--'.$option->getName(), 124 'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '', 125 'accept_value' => $option->acceptValue(), 126 'is_value_required' => $option->isValueRequired(), 127 'is_multiple' => $option->isArray(), 128 'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()), 129 'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault(), 130 ]; 131 } 132 133 /** 134 * @return array 135 */ 136 private function getInputDefinitionData(InputDefinition $definition) 137 { 138 $inputArguments = []; 139 foreach ($definition->getArguments() as $name => $argument) { 140 $inputArguments[$name] = $this->getInputArgumentData($argument); 141 } 142 143 $inputOptions = []; 144 foreach ($definition->getOptions() as $name => $option) { 145 $inputOptions[$name] = $this->getInputOptionData($option); 146 } 147 148 return ['arguments' => $inputArguments, 'options' => $inputOptions]; 149 } 150 151 /** 152 * @return array 153 */ 154 private function getCommandData(Command $command) 155 { 156 $command->getSynopsis(); 157 $command->mergeApplicationDefinition(false); 158 159 return [ 160 'name' => $command->getName(), 161 'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), 162 'description' => $command->getDescription(), 163 'help' => $command->getProcessedHelp(), 164 'definition' => $this->getInputDefinitionData($command->getNativeDefinition()), 165 'hidden' => $command->isHidden(), 166 ]; 167 } 168 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |