Класс 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 param в false.
$parser->addArgument('model', ['required' => false]); Предоставление текста справки
Предоставляя текст справки для позиционных аргументов и именованных аргументов, ConsoleOptionParser может сгенерировать для вас отображение справки. Вы можете просмотреть справку для оболочек, используя переключатель --help или -h.
Резюме свойств
- Определения позиционных аргументов.
$_argsprotected -
$_commandprotectedИмя команды.string -
$_descriptionprotectedТекст описания — отображается перед опциями при генерации справкиstring -
$_epilogprotectedТекст эпилога — отображается после опций при генерации справкиstring - Определения опций.
$_optionsprotected -
$_shortOptionsprotectedКарта коротких -> длинных опций, сгенерированная при использовании addOption()array - Подкоманды для этой оболочки.
$_subcommandsprotected -
$_tokensprotectedМассив аргументов (argv).array -
$rootNameprotectedОсновной псевдоним, используемый в выводе справкиstring
Резюме методов
- __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
Добавить подкоманду в список подкоманд. Подкоманды обычно являются методами в вашем Shell, но также могут использоваться для документирования задач.
- addSubcommands() publicДобавить сразу несколько подкоманд.
- arguments() publicПолучить аргументы, определённые в парсере.
- Создать парсер из массива. Использует массив, подобный
- command() publicПолучить или установить имя команды для оболочки/задачи.
- Статический метод фабрики для создания новых OptionParsers, чтобы вы могли вызывать методы по цепочке.
- description() publicПолучить или установить текстовое описание для оболочки/задачи.
- epilog() public
Получить или установить эпилог для парсера. Эпилог добавляется в конец списка параметров и аргументов при генерации справки.
- findClosestItem() protected
Попытаться угадать имя элемента, которое пользователь первоначально хотел использовать, с помощью некоторого шаблона регулярных выражений и алгоритма Левенштейна.
- getCommand() publicПолучить имя команды для оболочки/задачи.
- getCommandError() protected
Получить сообщение, выводимое в консоли, указывающее, что команда не найдена, и попытаться угадать, что хотел сказать пользователь. Вывести также список доступных подкоманд.
- getDescription() publicПолучить текстовое описание для оболочки/задачи.
- getEpilog() publicПолучить эпилог.
- getOptionError() protected
Получить сообщение, выводимое в консоли, указывающее, что параметр не найден, и попытаться угадать, что хотел сказать пользователь. Вывести также список доступных параметров.
- getShortOptionError() protected
Получить сообщение, выводимое в консоли, указывающее, что короткий параметр не найден. Вывести также список доступных коротких параметров и к какому параметру они относятся.
- help() publicПолучить отформатированную справку для этого объекта парсера.
- merge() publicПолучить или установить имя команды для оболочки/задачи.
- options() publicПолучить определённые параметры в парсере.
- parse() public
Обработать массив argv в набор параметров и аргументов. Если $command не равен null и $command равен подкоманде, которая имеет парсер, будет использоваться этот парсер для обработки $argv
- removeOption() publicУдалить параметр из парсера параметров.
- removeSubcommand() publicУдалить подкоманду из парсера параметров.
- setCommand() publicУстановить имя команды для оболочки/задачи.
- setDescription() publicУстановить текстовое описание для оболочки/задачи.
- setEpilog() public
Установить эпилог для парсера. Эпилог добавляется в конец списка параметров и аргументов при генерации справки.
- setHelpAlias() publicУстановить псевдоним, используемый в HelpFormatter
- setRootName() publicУстановить корневое имя, используемое в HelpFormatter
- subcommands() publicПолучить массив определённых подкоманд
- toArray() publicВозвращает представление этого парсера в виде массива.
Подробное описание метода
__construct()source public
__construct( string|null $command null , boolean $defaultOptions true )
Создать OptionParser, чтобы определить его поведение
Параметры
- string|null
$commandoptional null - Имя команды, для которой предназначен этот парсер. Имя команды используется для генерации справки.
- boolean
$defaultOptionsoptional true Необходимо ли устанавливать параметры verbose и quiet. Установка этого значения в false предотвратит добавление параметров
--verboseи--quiet.
_nextToken()source protected
_nextToken( )
Найти следующий токен в наборе argv.
Возвращает
stringследующий токен или ''
_optionExists()source protected
_optionExists( string $name )
Проверить, определён ли для $name параметр (короткий/длинный).
Параметры
- string
$name - Имя параметра.
Возвращает
boolean_parseArg()source protected
_parseArg( string $argument , array $args )
Обработать аргумент и убедиться, что аргумент не превышает количество аргументов и что аргумент является допустимым выбором.
Параметры
- строка
$argument - Аргумент для добавления
- массив
$args - Массив обработанных аргументов для добавления.
Возвращает
массивАргументы
Исключения
Cake\Console\Exception\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.
Исключения
Cake\Console\Exception\ConsoleException_parseShortOption()source protected
_parseShortOption( string $option , array $params )
Обработать значение для короткого параметра из $this->_tokens. Если $option является комбинацией нескольких сокращений, таких как -otf, они будут перемещены в стек токенов и обработаны индивидуально.
Параметры
- строка
$option - Параметр для обработки.
- массив
$params - Параметры для добавления обработанного значения
Возвращает
массивПараметры с добавленным $option.
Исключения
Cake\Console\Exception\ConsoleExceptionПри обнаружении неизвестных коротких параметров.
addArgument()source public
addArgument( Cake\Console\ConsoleInputArgument|string $name , array $params [] )
Добавить позиционный аргумент к парсеру параметров.
Параметры
-
helpТекст справки для отображения для данного аргумента. -
requiredТребуется ли этот параметр. -
indexИндекс аргумента, если он не определён, аргумент будет добавлен в конец аргументов. Если вы определите один и тот же индекс дважды, первый параметр будет перезаписан. -
choicesСписок допустимых значений для данного аргумента. Если оставлено пустым, все значения допустимы. При обработке будет возбуждено исключение при встрече недопустимого значения.
Параметры
-
Cake\Console\ConsoleInputArgument|строка$name Название аргумента. Также принимает экземпляр ConsoleInputArgument.
- массив
$paramsнеобязательно [] - Параметры для аргумента, см. выше.
Возвращает
$this
addArguments()source public
addArguments( array $args )
Добавить сразу несколько аргументов. Принимает массив определений аргументов. Ключи используются в качестве имён аргументов, а значения — как параметры аргумента.
Параметры
- массив
$args - Массив аргументов для добавления.
Возвращает
$this
См. также
\Cake\Console\ConsoleOptionParser::addArgument()addOption()source public
addOption( Cake\Console\ConsoleInputOption|string $name , array $options [] )
Добавить параметр к парсеру параметров. Параметры позволяют определить необязательные или обязательные параметры для вашей консольной программы. Параметры определяются используемыми ими параметрами.
Параметры
-
short- Однобуквенный вариант для этого параметра, оставьте неопределённым, если не нужно. -
help- Текст справки для этого параметра. Используется при генерации справки по параметру. -
default- Значение по умолчанию для этого параметра. Значения по умолчанию добавляются в обработанные параметры, когда прикреплённый параметр не указан или не имеет значения. Использование по умолчанию и логического вместе не сработает. Добавляются в обработанные параметры, когда параметр не определён. По умолчанию равно null. -
boolean- Параметр не использует значение, это просто переключатель булева значения. По умолчанию false. Если параметр определён как булев, он всегда будет добавлен в обработанные параметры. Если его нет, он будет false, если есть — true. -
multiple- Параметр может быть указан несколько раз. Обработанный параметр будет массивом значений, когда этот параметр включён. -
choicesСписок допустимых значений для данного параметра. Если оставлено пустым, все значения допустимы. При обработке будет возбуждено исключение при встрече недопустимого значения.
Параметры
-
Cake\Console\ConsoleInputOption|строка$name Длинное имя, которое вы хотите, чтобы значение было обработано при обработке параметров. Также принимает экземпляр ConsoleInputOption
- массив
$optionsнеобязательно [] - Массив параметров, которые определяют поведение параметра
Возвращает
$this
addOptions()source public
addOptions( array $options )
Добавить сразу несколько параметров. Принимает массив определений параметров. Ключи используются в качестве имён параметров, а значения — как параметры параметра.
Параметры
- массив
$options - Массив параметров для добавления.
Возвращает
$this
См. также
\Cake\Console\ConsoleOptionParser::addOption()addSubcommand()source public
addSubcommand( Cake\Console\ConsoleInputSubcommand|string $name , array $options [] )
Добавить подкоманду в список подкоманд. Подкоманды обычно являются методами вашего Shell, но также могут использоваться для документирования задач.
Параметры
-
help- Текст справки для подкоманды. -
parser- ConsoleOptionParser для подкоманды. Это позволяет создавать специфичные для метода парсеры параметров. При генерации справки по подкоманде, если присутствует парсер, он будет использован.
Параметры
-
Cake\Console\ConsoleInputSubcommand|строка$name - Имя подкоманды. Также принимает экземпляр ConsoleInputSubcommand
- массив
$optionsнеобязательно [] - Массив параметров, см. выше.
Возвращает
$this
addSubcommands()source public
addSubcommands( array $commands )
Добавить сразу несколько подкоманд.
Параметры
- массив
$commands - Массив подкоманд.
Возвращает
$this
arguments()source public
arguments( )
Получить аргументы, определённые в парсере.
Возвращает
Cake\Console\ConsoleInputArgument[]buildFromArray()source public static
buildFromArray( array $spec , boolean $defaultOptions true )
Создать парсер из массива. Использует массив, похожий на
$spec = [
'description' => 'text',
'epilog' => 'text',
'arguments' => [
// list of arguments compatible with addArguments.
],
'options' => [
// list of options compatible with addOptions
],
'subcommands' => [
// list of subcommands to add.
]
]; Параметры
- массив
$spec - Спецификация для создания OptionParser.
- логическое
$defaultOptionsнеобязательно true - Устанавливать ли параметры verbose и quiet.
Возвращает
Cake\Console\ConsoleOptionParsercommand()source public
command( string|null $text null )
Получить или установить имя команды для shell/задачи.
Устарело
3.4.0 Используйте setCommand()/getCommand() вместо этого.Параметры
- строка|null
$textнеобязательно null - Текст для установки или null, если нужно прочитать
Возвращает
строка|Cake\Console\ConsoleOptionParser$this При чтении — значение команды. При установке — возвращается $this.
create()source public static
create( string|null $command , boolean $defaultOptions true )
Статический фабричный метод для создания новых OptionParsers, чтобы вы могли их цеплять.
Параметры
- string|null
$command - Имя команды, для которой предназначен этот парсер. Имя команды используется для генерации справки.
- boolean
$defaultOptionsопционально true - Указывает, нужно ли устанавливать опции verbose и quiet.
Возвращает
Cake\Console\ConsoleOptionParserdescription()source public
description( string|array|null $text null )
Получение или установка текста описания для оболочки/задачи.
Устарело
3.4.0 Используйте setDescription()/getDescription() вместо этого.Параметры
- string|array|null
$textопционально null Текст для установки или null, если требуется чтение. Если массив, текст будет объединён с помощью "\n".
Возвращает
string|Cake\Console\ConsoleOptionParser$this Если происходит чтение, значение описания. Если происходит установка, будет возвращено $this
epilog()source public
epilog( string|array|null $text null )
Получение или установка эпилога для парсера. Эпилог добавляется в конец списка опций и аргументов при генерации справки.
Устарело
3.4.0 Используйте setEpilog()/getEpilog() вместо этого.Параметры
- string|array|null
$textопционально null Текст при установке или null при чтении. Если массив, текст будет объединён с помощью "\n".
Возвращает
string|Cake\Console\ConsoleOptionParser$this Если происходит чтение, значение эпилога. Если происходит установка, будет возвращено $this
findClosestItem()source protected
findClosestItem( string $needle , array $haystack )
Пытается угадать имя элемента, который пользователь изначально хотел использовать, используя некоторую схему регулярных выражений и алгоритм Левенштейна.
Параметры
- string
$needle - Неизвестный элемент (например, имя подкоманды или опции), который пытается использовать.
- array
$haystack - Список доступных элементов для типа, к которому относится $needle.
Возвращает
string|nullБлижайшее имя к элементу, введённому пользователем.
getCommand()source public
getCommand( )
Получает имя команды для оболочки/задачи.
Возвращает
stringЗначение команды.
getCommandError()source protected
getCommandError( string $command )
Получает сообщение, выводимое в консоли, указывающее, что команда не найдена, и пытается угадать, что хотел сказать пользователь. Также выводит список доступных подкоманд.
Параметры
- string
$command - Неизвестное имя команды, которая пытается быть обработана.
Возвращает
stringСообщение, которое должно быть выведено в консоли.
getDescription()source public
getDescription( )
Получает текст описания для оболочки/задачи.
Возвращает
stringЗначение описания
getOptionError()source protected
getOptionError( string $option )
Получает сообщение, выводимое в консоли, указывающее, что опция не найдена, и пытается угадать, что хотел сказать пользователь. Также выводит список доступных опций.
Параметры
- string
$option - Неизвестное имя опции, которая пытается быть использована.
Возвращает
stringСообщение, которое должно быть выведено в консоли.
getShortOptionError()source protected
getShortOptionError( string $option )
Получает сообщение, выводимое в консоли, указывающее, что короткая опция не найдена. Также выводит список доступных коротких опций и к каким опциям они относятся.
Параметры
- string
$option - Неизвестное имя короткой опции, которая пытается быть использована.
Возвращает
stringСообщение, которое должно быть выведено в консоли.
help()source public
help( string|null $subcommand null , string $format 'text' , integer $width 72 )
Получает отформатированную справку для этого объекта парсера.
Генерирует текст справки на основе описания, опций, аргументов, подкоманд и эпилога в парсере.
Параметры
- string|null
$subcommandопционально null Если присутствует и является корректной подкомандой, имеющей связанный парсер. Вместо этого будет показана справка по подкомандам.
- string
$formatопционально 'text' - Определяет формат вывода, может быть text или xml
- integer
$widthопционально 72 - Ширина для форматирования пользовательского контента. По умолчанию 72
Возвращает
stringСгенерированная справка.
merge()source public
merge( array|Cake\Console\ConsoleOptionParser $spec )
Получение или установка имени команды для оболочки/задачи.
Параметры
- array|
Cake\Console\ConsoleOptionParser$spec - ConsoleOptionParser или спецификация для объединения.
Возвращает
$this
options()source public
options( )
Получает определённые опции в парсере.
Возвращает
Cake\Console\ConsoleInputOption[]parse()source public
parse( array $argv )
Разбирает массив argv на набор параметров и аргументов. Если $command не равен null и $command равен подкоманде, имеющей парсер, будет использован этот парсер для разбора $argv.
Параметры
- array
$argv - Массив аргументов (argv) для разбора.
Возвращает
array[$params, $args]
Выбрасывает
Cake\Console\Exception\ConsoleExceptionПри обнаружении некорректного параметра.
removeOption()source public
removeOption( string $name )
Удаляет опцию из парсера опций.
Параметры
- string
$name - Имя опции для удаления.
Возвращает
$this
removeSubcommand()source public
removeSubcommand( string $name )
Удаляет подкоманду из парсера опций.
Параметры
- string
$name - Имя подкоманды для удаления.
Возвращает
$this
setCommand()source public
setCommand( string $text )
Устанавливает имя команды для оболочки/задачи.
Параметры
- string
$text - Текст для установки.
Возвращает
$this
setDescription()source public
setDescription( string|array $text )
Устанавливает текст описания для командной оболочки/задачи.
Параметры
- string|array
$text Текст для установки. Если массив, текст будет объединён с помощью "\n".
Возвращает
$this
setEpilog()source public
setEpilog( string|array $text )
Устанавливает эпилог для парсера. Эпилог добавляется в конец списка опций и аргументов при генерации справки.
Параметры
- string|array
$text Текст для установки. Если массив, текст будет объединён с помощью "\n".
Возвращает
$this
setHelpAlias()source public
setHelpAlias( string $alias )
Устанавливает псевдоним, используемый в HelpFormatter
Устарело
3.5.0 Используйте setRootName() вместо этого.Параметры
- string
$alias - Псевдоним
setRootName()source public
setRootName( string $name )
Устанавливает имя корневой команды, используемое в HelpFormatter
Параметры
- string
$name - Имя корневой команды
Возвращает
$this
subcommands()source public
subcommands( )
Получить массив определённых подкоманд
Возвращает
Cake\Console\ConsoleInputSubcommand[]toArray()source public
toArray( )
Возвращает представление парсера в виде массива.
Возвращает
массивПодробное описание свойств
$_argssource
protected Cake\Console\ConsoleInputArgument[]
Определения позиционных аргументов.
См. также
\Cake\Console\ConsoleOptionParser::addArgument()[]
$_descriptionsource
protected string
Текст описания — отображается перед опциями при генерации справки.
См. также
\Cake\Console\ConsoleOptionParser::description()$_epilogsource
protected string
Текст эпилога — отображается после опций при генерации справки.
См. также
\Cake\Console\ConsoleOptionParser::epilog()$_optionssource
protected Cake\Console\ConsoleInputOption[]
Определения опций.
См. также
\Cake\Console\ConsoleOptionParser::addOption()[]
$_shortOptionssource
protected array
Карта коротких -> длинных опций, сгенерированная при использовании addOption()
[]
$_subcommandssource
protected Cake\Console\ConsoleInputSubcommand[]
Подкоманды для этой оболочки.
См. также
\Cake\Console\ConsoleOptionParser::addSubcommand()[]
$rootNamesource
protected string
Корневой псевдоним, используемый в выводе справки
См. также
\Cake\Console\HelpFormatter::setAlias()'cake'
© 2005–2018 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/3.5/class-Cake.Console.ConsoleOptionParser.html