Класс 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', ['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Получить или установить имя команды для shell/задачи.
- Статический фабричный метод для создания новых OptionParsers, чтобы вы могли вызывать методы по цепочке.
- description() publicПолучить или установить текст описания для shell/задачи.
- epilog() public
Получить или установить эпилог для парсера. Эпилог добавляется в конец списка опций и аргументов при генерации справки.
- findClosestItem() protected
Попытаться угадать имя элемента, которое пользователь первоначально хотел использовать, используя некоторые шаблоны регулярных выражений и алгоритм Левенштейна.
- getCommand() publicПолучить имя команды для shell/задачи.
- getCommandError() protected
Получить сообщение, выводимое в консоли, указывающее, что команда не найдена, и попытаться угадать, что хотел сказать пользователь. Также вывести список доступных подкоманд.
- getDescription() publicПолучить текст описания для shell/задачи.
- getEpilog() publicПолучить эпилог.
- getOptionError() protected
Получить сообщение, выводимое в консоли, указывающее, что опция не найдена, и попытаться угадать, что хотел сказать пользователь. Также вывести список доступных опций.
- getShortOptionError() protected
Получить сообщение, выводимое в консоли, указывающее, что короткая опция не найдена. Также вывести список доступных коротких опций и к какой опции они относятся.
- help() publicПолучить отформатированную справку для этого объекта парсера.
- merge() publicПолучить или установить имя команды для shell/задачи.
- options() publicПолучить определенные опции в парсере.
- parse() public
Обработать массив argv в набор параметров и аргументов. Если $command не равен null и $command равен подкоманде, имеющей парсер, будет использован этот парсер для обработки $argv
- removeOption() publicУдалить опцию из парсера опций.
- removeSubcommand() publicУдалить подкоманду из парсера опций.
- setCommand() publicУстановить имя команды для shell/задачи.
- setDescription() publicУстановить текст описания для shell/задачи.
- setEpilog() public
Установить эпилог для парсера. Эпилог добавляется в конец списка опций и аргументов при генерации справки.
- setHelpAlias() publicУстановить псевдоним, используемый в HelpFormatter
- setRootName() publicУстановить корневое имя, используемое в HelpFormatter
- subcommands() publicПолучить массив определенных подкоманд
- toArray() publicВозвращает массивное представление этого парсера.
Подробное описание методов
__construct()source public
__construct( string|null $command null , boolean $defaultOptions true )
Создать OptionParser, чтобы определить его поведение
Параметры
- строка|null
$commandoptional null - Имя команды, для которой предназначен этот парсер. Имя команды используется для генерации справки.
- логическое
$defaultOptionsoptional 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
Выбрасывает
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( )
Получить аргументы, определённые в обработчике.
Возвращает
массивМассив описаний аргументов
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
$defaultOptionsoptional true - Указывает, нужно ли устанавливать опции verbose и quiet.
Возвращаемое значение
Cake\Console\ConsoleOptionParserdescription()source public
description( string|array|null $text null )
Получение или установка описания для оболочки/задачи.
Устарело
3.4.0 Используйте setDescription()/getDescription() вместо этого.Параметры
- string|array|null
$textoptional 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
$textoptional 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Значение описания
getEpilog()source public
getEpilog( )
Получает эпилог.
Возвращаемое значение
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
$subcommandoptional null Если присутствует и является действительной подкомандой, имеющей связанный парсер. Вместо этого будет показана справка по подкоманде.
- string
$formatoptional 'text' - Определение формата вывода, может быть text или xml
- integer
$widthoptional 72 - Ширина для форматирования пользовательского содержимого. По умолчанию 72
Возвращаемое значение
stringСгенерированная справка.
merge()source public
merge( array|Cake\Console\ConsoleOptionParser $spec )
Получение или установка имени команды для оболочки/задачи.
Параметры
- array|
Cake\Console\ConsoleOptionParser$spec - ConsoleOptionParser или спецификация для слияния.
Возвращаемое значение
$this
options()source public
options( )
Получение определённых опций в парсере.
Возвращаемое значение
arrayparse()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
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–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/3.4/class-Cake.Console.ConsoleOptionParser.html