Класс ConsoleOptionParser
Обрабатывает разбор ARGV в командной строке и предоставляет поддержку определения опций, совместимых с GetOpt. Обеспечивает реализацию паттерна билдера для создания парсеров опций оболочки.
Опции
Именованные аргументы представлены в двух форматах: длинном и коротком. Длинные аргументы предваряются двумя символами «-» и имеют более подробное имя опции. Например: --version. Короткие аргументы предваряются одним символом «-» и имеют длину всего один символ. Обычно они соответствуют длинной опции и предоставляют более краткую альтернативу.
Использование опций
Опции могут быть определены с помощью длинной и короткой форм. Используя $parser->addOption(), вы можете определять новые опции. Имя опции используется как ее длинная форма, и вы можете предоставить дополнительную короткую форму с помощью short опции. Короткие опции должны иметь длину только один символ. Использование более одного символа для короткой опции приведет к исключению.
Вызов опций может быть выполнен с помощью синтаксиса, аналогичного большинству *nix командных инструментов. Длинные опции могут содержать = или не содержать его.
cake myshell command --connection default --name=something
Короткие опции могут быть определены по отдельности или группами.
cake myshell command -cn
Короткие опции могут быть объединены в группы, как показано выше. Каждый символ в группе будет обрабатываться как отдельная опция. Предыдущий пример эквивалентен:
cake myshell command -c -n
Короткие опции также могут принимать значения:
cake myshell command -c default
Позиционные аргументы
Если позиционные аргументы не определены, все они будут обработаны. Если вы определите позиционные аргументы, любые аргументы, превышающие заданное количество, вызовут исключения. Кроме того, вы можете объявить аргументы необязательными, установив параметр required в false.
$parser->addArgument('model', array('required' => false));
Предоставление текста справки
Предоставляя текст справки для позиционных аргументов и именованных аргументов, ConsoleOptionParser может сгенерировать для вас отображение справки. Вы можете просмотреть справку для оболочек, используя --help или -h переключатель.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Console/ConsoleOptionParser.php
Краткое описание свойств
-
$_argsprotectedОпределения позиционных аргументов.array -
$_commandprotectedИмя команды.string -
$_descriptionprotectedТекст описания — отображается перед опциями при генерации справкиstring -
$_epilogprotectedТекст эпилога — отображается после опций при генерации справкиstring -
$_optionsprotectedОпределения опций.array -
$_shortOptionsprotectedМаппинг коротких -> длинных опций, генерируется при использовании addOption()string -
$_subcommandsprotectedПодкоманды для этой оболочки.array
Краткое описание методов
- __construct() publicКонструктор OptionParser для определения его поведения
- _nextToken() protectedПоиск следующего токена в наборе argv.
- _optionExists() protectedПроверка наличия опции (короткой/длинной) для $name.
- _parseArg() protected
Обработка аргумента и проверка, что аргумент не превышает заданное количество и является допустимым выбором.
- _parseLongOption() protected
Обработка значения длинной опции из $this->_tokens. Обрабатывает опции с
=в них. - _parseOption() protectedОбработка опции по ее индексу имени.
- _parseShortOption() protected
Обработка значения короткой опции из $this->_tokens. Если $option является комбинацией нескольких сокращений, таких как -otf, они будут перемещены в стек токенов и обработаны по отдельности.
- addArgument() publicДобавление позиционного аргумента в парсер опций.
- addArguments() public
Добавление нескольких аргументов сразу. Принимает массив определений аргументов. Ключи используются в качестве имен аргументов, а значения — в качестве параметров аргумента.
- addOption() public
Добавление опции в парсер опций. Опции позволяют определять необязательные или обязательные параметры для вашей консольной программы. Опции определяются используемыми ими параметрами.
- addOptions() public
Добавление нескольких опций одновременно. Принимает массив определений опций. Ключи используются в качестве имен опций, а значения — в качестве параметров опции.
- addSubcommand() public
Добавление подкоманды в список подкоманд. Подкоманды обычно являются методами вашей оболочки, но также могут использоваться для документирования задач.
- addSubcommands() publicДобавление нескольких подкоманд одновременно.
- arguments() publicПолучение аргументов, определенных в парсере.
- Построение парсера из массива. Использует массив, похожий на
- command() publicПолучение или установка имени команды для оболочки/задачи.
- Статический фабричный метод для создания новых OptionParser, позволяющий цепочить методы.
- description() publicПолучение или установка текста описания для оболочки/задачи.
- epilog() public
Получение или установка эпилога для парсера. Эпилог добавляется в конец списка опций и аргументов при генерации справки.
- help() public
Получение отформатированной справки для этого объекта парсера. Генерирует текст справки на основе описания, опций, аргументов, подкоманд и эпилога в парсере.
- options() publicПолучение определенных опций в парсере.
- parse() public
Обработка массива argv в набор параметров и аргументов. Если $command не равен null и $command равен подкоманде, у которой есть парсер, будет использован этот парсер для обработки $argv
- removeSubcommand() publicУдаление подкоманды из парсера опций.
- subcommands() publicПолучение массива определенных подкоманд
Подробное описание методов
__construct()source public
__construct( string $command null , boolean $defaultOptions true )
Конструктор OptionParser для определения его поведения
Параметры
- строка
$commandнеобязательно null - Имя команды, для которой предназначен этот парсер. Имя команды используется для генерации справки.
- логическое значение
$defaultOptionsнеобязательно true Указывает, хотите ли вы установить опции verbose и quiet. Установка значения в false предотвратит добавление
--verbose&--quietопций.
_nextToken()source protected
_nextToken( )
Поиск следующего токена в наборе argv.
Возвращает
строкаследующий токен или ''
_optionExists()source protected
_optionExists( string $name )
Проверка наличия опции (короткой/длинной) для $name.
Параметры
- строка
$name - Имя опции.
Возвращает
логическое значение_parseArg()source protected
_parseArg( string $argument , array $args )
Обработать аргумент и убедиться, что аргумент не превышает количество аргументов и что аргумент является допустимым выбором.
Параметры
- строка
$argument - Аргумент для добавления
- массив
$args - Массив обработанных аргументов, к которому нужно добавить.
Возвращает
массивArgs
Выбрасывает
ConsoleException_parseLongOption()source protected
_parseLongOption( string $option , array $params )
Обработать значение для длинного параметра из $this->\_tokens. Будет обрабатывать параметры с = в них.
Параметры
- строка
$option - Параметр для обработки.
- массив
$params - Массив параметров, в который нужно добавить обработанное значение.
Возвращает
массивПараметры с добавленным $option.
_parseOption()source protected
_parseOption( string $name , array $params )
Обработать параметр по его индексу имени.
Параметры
- строка
$name - Имя для обработки.
- массив
$params - Массив параметров, в который нужно добавить обработанное значение.
Возвращает
массивПараметры с добавленным $option.
Выбрасывает
ConsoleException_parseShortOption()source protected
_parseShortOption( string $option , array $params )
Обработать значение для короткого параметра из $this->\_tokens. Если $option является комбинацией нескольких сокращений, таких как -otf, они будут перемещены в стек маркеров и обработаны индивидуально.
Параметры
- строка
$option - Параметр для обработки.
- массив
$params - Массив параметров, в который нужно добавить обработанное значение.
Возвращает
массивПараметры с добавленным $option.
Выбрасывает
ConsoleExceptionПри обнаружении неизвестных коротких параметров.
addArgument()source public
addArgument( ConsoleInputArgument|string $name , array $params array() )
Добавить позиционный аргумент к парсеру параметров.
Параметры
-
helpТекст справки для отображения для этого аргумента. -
requiredТребуется ли этот параметр. -
indexИндекс аргумента; если не указан, аргумент будет добавлен в конец аргументов. Если вы укажете один и тот же индекс дважды, первый параметр будет перезаписан. -
choicesСписок допустимых значений для этого аргумента. Если оставлен пустым, все значения допустимы. При обработке неверного значения будет возбуждено исключение.
Параметры
-
ConsoleInputArgument|строка$name - Имя аргумента. Также принимает экземпляр ConsoleInputArgument
- массив
$paramsoptional array() - Параметры для аргумента, см. выше.
Возвращает
ConsoleOptionParseraddArguments()source public
addArguments( array $args )
Добавить сразу несколько аргументов. Принимает массив определений аргументов. Ключи используются как имена аргументов, а значения — как параметры аргумента.
Параметры
- массив
$args - Массив добавляемых аргументов.
Возвращает
ConsoleOptionParserСм. также
ConsoleOptionParser::addArgument()addOption()source public
addOption( ConsoleInputOption|string $name , array $options array() )
Добавить параметр к парсеру параметров. Параметры позволяют определять необязательные или обязательные параметры для вашей консольной программы. Параметры определяются используемыми ими параметрами.
Параметры
-
short- Однобуквенное обозначение для этого параметра, оставить неопределенным для отсутствия. -
help- Текст справки для этого параметра. Используется при генерации справки по параметру. -
default- Значение по умолчанию для этого параметра. Значения по умолчанию добавляются в обработанные параметры, если указанный параметр не предоставлен или не имеет значения. Использование значений по умолчанию и логических значений вместе не сработает. Добавляются в обработанные параметры, когда параметр не определен. По умолчанию равно null. -
boolean- Параметр не использует значения, это просто переключатель булевого типа. По умолчанию ложно. Если параметр определен как булевский, он всегда будет добавлен в обработанные параметры. Если отсутствует, он будет ложным, если присутствует — истинным. -
choicesСписок допустимых значений для этого параметра. Если оставлен пустым, все значения допустимы. При обработке неверного значения будет возбуждено исключение.
Параметры
-
ConsoleInputOption|строка$name Длинное имя, которое нужно использовать для значения, которое будет обработано при обработке параметров. Также принимает экземпляр ConsoleInputOption
- массив
$optionsoptional array() - Массив параметров, определяющих поведение параметра
Возвращает
ConsoleOptionParseraddOptions()source public
addOptions( array $options )
Добавить сразу несколько параметров. Принимает массив определений параметров. Ключи используются как имена параметров, а значения — как параметры параметра.
Параметры
- массив
$options - Массив добавляемых параметров.
Возвращает
ConsoleOptionParserСм. также
ConsoleOptionParser::addOption()addSubcommand()source public
addSubcommand( ConsoleInputSubcommand|string $name , array $options array() )
Добавить подкоманду в список подкоманд. Подкоманды обычно являются методами в вашем Shell, но также могут использоваться для документирования задач.
Параметры
-
help- Текст справки для подкоманды. -
parser- ConsoleOptionParser для подкоманды. Это позволяет создавать специфичные для метода парсеры параметров. При генерации справки по подкоманде, если парсер присутствует, он будет использован.
Параметры
-
ConsoleInputSubcommand|строка$name - Имя подкоманды. Также принимает экземпляр ConsoleInputSubcommand
- массив
$optionsoptional array() - Массив параметров, см. выше.
Возвращает
ConsoleOptionParseraddSubcommands()source public
addSubcommands( array $commands )
Добавить сразу несколько подкоманд.
Параметры
- массив
$commands - Массив подкоманд.
Возвращает
ConsoleOptionParserarguments()source public
arguments( )
Получить аргументы, определенные в парсере.
Возвращает
массивМассив описаний аргументов
buildFromArray()source public static
buildFromArray( array $spec )
Создать парсер из массива. Использует массив, подобный
$spec = array(
'description' => 'text',
'epilog' => 'text',
'arguments' => array(
// list of arguments compatible with addArguments.
),
'options' => array(
// list of options compatible with addOptions
),
'subcommands' => array(
// list of subcommands to add.
)
); Параметры
- массив
$spec - Спецификация для создания OptionParser.
Возвращает
ConsoleOptionParsercommand()source public
command( string $text null )
Получить или установить имя команды для оболочки/задачи.
Параметры
- строка
$textoptional null - Текст для установки или null, если нужно прочитать
Возвращает
строка|ConsoleOptionParserПри чтении — значение команды. При установке — $this.
create()source public static
create( string $command , boolean $defaultOptions true )
Статический фабричный метод для создания новых OptionParser, чтобы можно было использовать цепочку методов.
Параметры
- строка
$command - Имя команды, для которой предназначен этот парсер. Имя команды используется для генерации справки.
- булево
$defaultOptionsoptional true - Устанавливать ли параметры verbose и quiet.
Возвращает
ConsoleOptionParserdescription()source public
description( string|array $text null )
Получить или установить текст описания для командной строки/задачи.
Параметры
- string|array
$textнеобязательно null Текст для установки, или null, если нужно прочитать. Если массив, текст будет объединен с помощью "\n"
Возвращает
string|ConsoleOptionParserПри чтении, значение описания. При установке возвращается $this.
epilog()source public
epilog( string|array $text null )
Получить или установить эпилог для парсера. Эпилог добавляется в конец списка опций и аргументов при генерации справки.
Параметры
- string|array
$textнеобязательно null - Текст при установке или null при чтении. Если массив, текст будет объединен с помощью "\n"
Возвращает
string|ConsoleOptionParserПри чтении, значение эпилога. При установке возвращается $this.
help()source public
help( string $subcommand null , string $format 'text' , integer $width 72 )
Получает отформатированную справку для этого объекта парсера. Генерирует текст справки на основе описания, опций, аргументов, подкоманд и эпилога в парсере.
Параметры
- string
$subcommandнеобязательно null Если присутствует и является допустимой подкомандой, которая имеет связанный парсер. Вместо этого будет показана справка по этой подкоманде.
- string
$formatнеобязательно 'text' - Определите формат вывода, может быть text или xml
- integer
$widthнеобязательно 72 - Ширина для форматирования пользовательского содержимого. По умолчанию 72
Возвращает
stringСгенерированная справка.
parse()source public
parse( array $argv , string $command null )
Обработать массив argv в набор параметров и аргументов. Если $command не равен null и $command равен подкоманде, у которой есть парсер, будет использован этот парсер для обработки $argv.
Параметры
- array
$argv - Массив аргументов (argv) для обработки.
- string
$commandнеобязательно null Подкоманда для использования. Если этот параметр является подкомандой, у которой есть парсер, этот парсер будет использован для обработки $argv вместо текущего.
Возвращает
arrayмассив($params, $args)
Выбрасывает
ConsoleExceptionПри обнаружении недопустимого параметра.
removeSubcommand()source public
removeSubcommand( string $name )
Удалить подкоманду из парсера опций.
Параметры
- string
$name - Имя подкоманды для удаления.
Возвращает
ConsoleOptionParserПодробное описание свойств
$_argssource
protected array
Определения позиционных аргументов.
См.
ConsoleOptionParser::addArgument()array()
$_descriptionsource
protected string
Текст описания - отображается перед опциями при генерации справки.
См.
ConsoleOptionParser::description()null
$_epilogsource
protected string
Текст эпилога - отображается после опций при генерации справки.
См.
ConsoleOptionParser::epilog()null
$_shortOptionssource
protected string
Карта короткая -> длинная опция, сгенерированная при использовании addOption()
array()
$_subcommandssource
protected array
Подкоманды для этого Shell.
См.
ConsoleOptionParser::addSubcommand()array()
© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/2.10/class-ConsoleOptionParser.html