Console/Getopt.php
Zend_Console_Getopt is a class to parse options for command-line
applications.
LICENSE
This source file is subject to the new BSD license that is bundled
with this package in the file LICENSE.txt.
It is also available through the world-wide-web at this URL:
http://framework.zend.com/license/new-bsd
If you did not receive a copy of the license and are unable to
obtain it through the world-wide-web, please send an email
to license@zend.com so we can send you a copy immediately.
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Package
- Zend_Console_Getopt
- Version
- $Id$
Package: Zend_Console_GetoptZend_Console_Getopt is a class to parse options for command-line
applications.
Terminology:
Argument: an element of the argv array. This may be part of an option,
or it may be a non-option command-line argument.
Flag: the letter or word set off by a '-' or '--'. Example: in '--output filename',
'--output' is the flag.
Parameter: the additional argument that is associated with the option.
Example: in '--output filename', the 'filename' is the parameter.
Option: the combination of a flag and its parameter, if any.
Example: in '--output filename', the whole thing is the option.
The following features are supported:
- Short flags like '-a'. Short flags are preceded by a single
dash. Short flags may be clustered e.g. '-abc', which is the
same as '-a' '-b' '-c'.
- Long flags like '--verbose'. Long flags are preceded by a
double dash. Long flags may not be clustered.
- Options may have a parameter, e.g. '--output filename'.
- Parameters for long flags may also be set off with an equals sign,
e.g. '--output=filename'.
- Parameters for long flags may be checked as string, word, or integer.
- Automatic generation of a helpful usage message.
- Signal end of options with '--'; subsequent arguments are treated
as non-option arguments, even if they begin with '-'.
- Raise exception Zend_Console_Getopt_Exception in several cases
when invalid flags or parameters are given. Usage message is
returned in the exception object.
The format for specifying options uses a PHP associative array.
The key is has the format of a list of pipe-separated flag names,
followed by an optional '=' to indicate a required parameter or
'-' to indicate an optional parameter. Following that, the type
of parameter may be specified as 's' for string, 'w' for word,
or 'i' for integer.
Examples:
- 'user|username|u=s' this means '--user' or '--username' or '-u'
are synonyms, and the option requires a string parameter.
- 'p=i' this means '-p' requires an integer parameter. No synonyms.
- 'verbose|v-i' this means '--verbose' or '-v' are synonyms, and
they take an optional integer parameter.
- 'help|h' this means '--help' or '-h' are synonyms, and
they take no parameter.
The values in the associative array are strings that are used as
brief descriptions of the options when printing a usage message.
The simpler format for specifying options used by PHP's getopt()
function is also supported. This is similar to GNU getopt and shell
getopt format.
Example: 'abc:' means options '-a', '-b', and '-c'
are legal, and the latter requires a string parameter.
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Since
- Class available since Release 0.6.0
- Todo
- Handle params with multiple values, e.g. --colors=red,green,blue
Set value of parameter to the array of values. Allow user to specify
the separator with Zend_Console_Getopt::CONFIG_PARAMETER_SEPARATOR.
If this config value is null or empty string, do not split values
into arrays. Default separator is comma (',').
- Todo
- Handle params with multiple values specified with separate options
e.g. --colors red --colors green --colors blue should give one
option with an array(red, green, blue).
Enable with Zend_Console_Getopt::CONFIG_CUMULATIVE_PARAMETERS.
Default is that subsequent options overwrite the parameter value.
- Todo
- Handle flags occurring multiple times, e.g. -v -v -v
Set value of the option's parameter to the integer count of instances
instead of a boolean.
Enable with Zend_Console_Getopt::CONFIG_CUMULATIVE_FLAGS.
Default is that the value is simply boolean true regardless of
how many instances of the flag appear.
- Todo
- Handle flags that implicitly print usage message, e.g. --help
- Todo
- Handle freeform options, e.g. --set-variable
Enable with Zend_Console_Getopt::CONFIG_FREEFORM_FLAGS
All flag-like syntax is recognized, no flag generates an exception.
- Todo
- Handle numeric options, e.g. -1, -2, -3, -1000
Enable with Zend_Console_Getopt::CONFIG_NUMERIC_FLAGS
The rule must specify a named flag and the '#' symbol as the
parameter type. e.g., 'lines=#'
- Todo
- Enable user to specify header and footer content in the help message.
- Todo
- Feature request to handle option interdependencies.
e.g. if -b is specified, -a must be specified or else the
usage is invalid.
- Todo
- Feature request to implement callbacks.
e.g. if -a is specified, run function 'handleOptionA'().
- Version
- Release: @package_version@
Constants
MODE_ZEND
= 'zend'
The options for a given application can be in multiple formats.
modeGnu is for traditional 'ab:c:' style getopt format.
modeZend is for a more structured format.
PARAM_REQUIRED
= '='
Constant tokens for various symbols used in the mode_zend
rule format.
CONFIG_RULEMODE
= 'ruleMode'
These are constants for optional behavior of this class.
ruleMode is either 'zend' or 'gnu' or a user-defined mode.
dashDash is true if '--' signifies the end of command-line options.
ignoreCase is true if '--opt' and '--OPT' are implicitly synonyms.
parseAll is true if all options on the command line should be parsed, regardless of
whether an argument appears before them.
CONFIG_DASHDASH
= 'dashDash'
CONFIG_IGNORECASE
= 'ignoreCase'
CONFIG_PARSEALL
= 'parseAll'
Properties
array $_argv = array()
Stores the command-line arguments for the calling applicaion.
Default valuearray()
Details- Type
- array
$_getoptConfig = array(self::CONFIG_RULEMODE => self::MODE_ZEND, self::CONFIG_DASHDASH => true, self::CONFIG_IGNORECASE => false, self::CONFIG_PARSEALL => true)
Defaults for getopt configuration are:
ruleMode is 'zend' format,
dashDash (--) token is enabled,
ignoreCase is not enabled,
parseAll is enabled.
Default valuearray(self::CONFIG_RULEMODE => self::MODE_ZEND, self::CONFIG_DASHDASH => true, self::CONFIG_IGNORECASE => false, self::CONFIG_PARSEALL => true)
Details- Type
- n/a
array $_options = array()
Stores options given by the user in the current invocation
of the application, as well as parameters given in options.
Default valuearray()
Details- Type
- array
boolean $_parsed = false
State of the options: parsed or not yet parsed?
Default valuefalse
Details- Type
- boolean
string $_progname = ''
Stores the name of the calling applicaion.
Default value''
Details- Type
- string
array $_remainingArgs = array()
Stores the command-line arguments other than options.
Default valuearray()
Details- Type
- array
array $_ruleMap = array()
Stores alternate spellings of legal options.
Default valuearray()
Details- Type
- array
array $_rules = array()
Stores the list of legal options for this application.
Default valuearray()
Details- Type
- array
Methods
__construct(array $rules, array $argv = null, array $getoptConfig = array()) : void
The constructor takes one to three parameters.
The first parameter is $rules, which may be a string for
gnu-style format, or a structured array for Zend-style format.
The second parameter is $argv, and it is optional. If not
specified, $argv is inferred from the global argv.
The third parameter is an array of configuration parameters
to control the behavior of this instance of Getopt; it is optional.
ParametersName | Type | Description |
---|
$rules | array | |
---|
$argv | array | |
---|
$getoptConfig | array | |
---|
__get(string $key) : string
Return the state of the option seen on the command line of the
current application invocation. This function returns true, or the
parameter to the option, if any. If the option was not given,
this function returns null.
The magic __get method works in the context of naming the option
as a virtual member of this class.
ParametersName | Type | Description |
---|
$key | string | |
---|
Returns__isset(string $key) : boolean
Test whether a given option has been seen.
ParametersName | Type | Description |
---|
$key | string | |
---|
Returns __set(string $key, string $value) : void
Set the value for a given option.
ParametersName | Type | Description |
---|
$key | string | |
---|
$value | string | |
---|
_addRulesModeGnu(string $rules) : void
Define legal options using the gnu-style format.
ParametersName | Type | Description |
---|
$rules | string | |
---|
_addRulesModeZend(array $rules) : void
Define legal options using the Zend-style format.
ParametersName | Type | Description |
---|
$rules | array | |
---|
Throws _checkParameterType(string $flag, string $param) : bool
Return true if the parameter is in a valid format for
the option $flag.
Throw an exception in most other cases.
ParametersName | Type | Description |
---|
$flag | string | |
---|
$param | string | |
---|
ReturnsThrows_parseLongOption( $argv) : void
Parse command-line arguments for a single long option.
A long option is preceded by a double '--' character.
Long options may not be clustered.
Parameters_parseShortOptionCluster( $argv) : void
Parse command-line arguments for short options.
Short options are those preceded by a single '-' character.
Short options may be clustered.
Parameters_parseSingleOption(string $flag, mixed $argv) : void
Parse command-line arguments for a single option.
ParametersName | Type | Description |
---|
$flag | string | |
---|
$argv | mixed | |
---|
Throws addArguments(array $argv) : \Zend_Console_Getopt
Define additional command-line arguments.
These are appended to those defined when the constructor was called.
ParametersName | Type | Description |
---|
$argv | array | |
---|
ReturnsThrowsaddRules(array $rules) : \Zend_Console_Getopt
Define additional option rules.
These are appended to the rules defined when the constructor was called.
ParametersName | Type | Description |
---|
$rules | array | |
---|
ReturnsgetOption(string $flag) : mixed
Return the state of the option seen on the command line of the
current application invocation.
This function returns true, or the parameter value to the option, if any.
If the option was not given, this function returns false.
ParametersName | Type | Description |
---|
$flag | string | |
---|
ReturnsgetUsageMessage() : string
Return a useful option reference, formatted for display in an
error message.
Note that this usage information is provided in most Exceptions
generated by this class.
Returnsparse() : \Zend_Console_Getopt | null
Parse command-line arguments and find both long and short
options.
Also find option parameters, and remaining arguments after
all options have been parsed.
ReturnssetAliases(array $aliasMap) : \Zend_Console_Getopt
Define aliases for options.
The parameter $aliasMap is an associative array
mapping option name (short or long) to an alias.
ParametersName | Type | Description |
---|
$aliasMap | array | |
---|
ReturnsThrowssetArguments(array $argv) : \Zend_Console_Getopt
Define full set of command-line arguments.
These replace any currently defined.
ParametersName | Type | Description |
---|
$argv | array | |
---|
ReturnsThrowssetHelp(array $helpMap) : \Zend_Console_Getopt
Define help messages for options.
The parameter $help_map is an associative array
mapping option name (short or long) to the help string.
ParametersName | Type | Description |
---|
$helpMap | array | |
---|
ReturnssetOption(string $configKey, string $configValue) : \Zend_Console_Getopt
Define one configuration option as a key/value pair.
These are not program options, but properties to configure
the behavior of Zend_Console_Getopt.
ParametersName | Type | Description |
---|
$configKey | string | |
---|
$configValue | string | |
---|
ReturnssetOptions(array $getoptConfig) : \Zend_Console_Getopt
Define multiple configuration options from an associative array.
These are not program options, but properties to configure
the behavior of Zend_Console_Getopt.
ParametersName | Type | Description |
---|
$getoptConfig | array | |
---|
ReturnstoArray() : array
Return the current set of options and parameters seen
as an array of canonical options and parameters.
Clusters have been expanded, and option aliases
have been mapped to their primary option names.
Returns