API Documentation

Console/Getopt.php

Classes 
category
Zend
copyright
Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
license
http://framework.zend.com/license/new-bsd New BSD License
package
Zend_Console_Getopt
version
$Id: Getopt.php 22485 2010-06-25 22:54:25Z ramon $
Classes
Zend_Console_Getopt

Description

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.

Zend_Console_Getopt

category
Zend
copyright
Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
license
http://framework.zend.com/license/new-bsd New BSD License
package
Zend_Console_Getopt
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
MODE_GNU
PARAM_REQUIRED
PARAM_OPTIONAL
TYPE_STRING
TYPE_WORD
TYPE_INTEGER
CONFIG_RULEMODE
CONFIG_DASHDASH
CONFIG_IGNORECASE
CONFIG_PARSEALL
Properties
$_getoptConfig
$_argv
$_progname
$_rules
$_ruleMap
$_options
$_remainingArgs
$_parsed
Methods
__construct
__get
__isset
__set
__toString
__unset
addArguments
setArguments
setOptions
setOption
addRules
toString
toArray
toJson
toXml
getOptions
getOption
getRemainingArgs
getUsageMessage
setAliases
setHelp
parse
_parseLongOption
_parseShortOptionCluster
_parseSingleOption
_checkParameterType
_addRulesModeGnu
_addRulesModeZend

Description

Zend_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.

Constants

MODE_ZEND

 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.

Details

value
zend

MODE_GNU

 MODE_GNU = 'gnu'

Details

value
gnu

PARAM_REQUIRED

 PARAM_REQUIRED = '='

Constant tokens for various symbols used in the mode_zend rule format.

Details

value
=

PARAM_OPTIONAL

 PARAM_OPTIONAL = '-'

Details

value
-

TYPE_STRING

 TYPE_STRING = 's'

Details

value
s

TYPE_WORD

 TYPE_WORD = 'w'

Details

value
w

TYPE_INTEGER

 TYPE_INTEGER = 'i'

Details

value
i

CONFIG_RULEMODE

 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.

Details

value
ruleMode

CONFIG_DASHDASH

 CONFIG_DASHDASH = 'dashDash'

Details

value
dashDash

CONFIG_IGNORECASE

 CONFIG_IGNORECASE = 'ignoreCase'

Details

value
ignoreCase

CONFIG_PARSEALL

 CONFIG_PARSEALL = 'parseAll'

Details

value
parseAll

Properties

$_argv

array $_argv = 'array'

Stores the command-line arguments for the calling applicaion.

Details

$_argv
array
visibility
protected
default
array
final
false
static
false

$_getoptConfig

 $_getoptConfig = 'array'

Defaults for getopt configuration are: ruleMode is 'zend' format, dashDash (--) token is enabled, ignoreCase is not enabled, parseAll is enabled.

Details

visibility
protected
default
array
final
false
static
false

$_options

array $_options = 'array'

Stores options given by the user in the current invocation of the application, as well as parameters given in options.

Details

$_options
array
visibility
protected
default
array
final
false
static
false

$_parsed

boolean $_parsed = 'false'

State of the options: parsed or not yet parsed?

Details

$_parsed
boolean
visibility
protected
default
false
final
false
static
false

$_progname

string $_progname = ''

Stores the name of the calling applicaion.

Details

$_progname
string
visibility
protected
default
final
false
static
false

$_remainingArgs

array $_remainingArgs = 'array'

Stores the command-line arguments other than options.

Details

$_remainingArgs
array
visibility
protected
default
array
final
false
static
false

$_ruleMap

array $_ruleMap = 'array'

Stores alternate spellings of legal options.

Details

$_ruleMap
array
visibility
protected
default
array
final
false
static
false

$_rules

array $_rules = 'array'

Stores the list of legal options for this application.

Details

$_rules
array
visibility
protected
default
array
final
false
static
false

Methods

__construct

__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.

Arguments
$rules
array
$argv
array
$getoptConfig
array
Details
visibility
public
final
false
static
false

__get

__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.

Arguments
$key
string
Output
string
Details
visibility
public
final
false
static
false

__isset

__isset( string $key ) : boolean

Test whether a given option has been seen.

Arguments
$key
string
Output
boolean
Details
visibility
public
final
false
static
false

__set

__set( string $key, string $value ) : void

Set the value for a given option.

Arguments
$key
string
$value
string
Details
visibility
public
final
false
static
false

__toString

__toString( ) : string

Return the current set of options and parameters seen as a string.

Output
string
Details
visibility
public
final
false
static
false

__unset

__unset( string $key ) : void

Unset an option.

Arguments
$key
string
Details
visibility
public
final
false
static
false

_addRulesModeGnu

_addRulesModeGnu( string $rules ) : void

Define legal options using the gnu-style format.

Arguments
$rules
string
Details
visibility
protected
final
false
static
false

_addRulesModeZend

_addRulesModeZend( array $rules ) : void

Define legal options using the Zend-style format.

Arguments
$rules
array
Details
visibility
protected
final
false
static
false
throws

_checkParameterType

_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.

Arguments
$flag
string
$param
string
Output
bool
Details
visibility
protected
final
false
static
false
throws

_parseLongOption

_parseLongOption( mixed $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.

Arguments
$argv
mixed
&$argv
Details
visibility
protected
final
false
static
false

_parseShortOptionCluster

_parseShortOptionCluster( mixed $argv ) : void

Parse command-line arguments for short options.

Short options are those preceded by a single '-' character. Short options may be clustered.

Arguments
$argv
mixed
&$argv
Details
visibility
protected
final
false
static
false

_parseSingleOption

_parseSingleOption( string $flag, mixed $argv ) : void

Parse command-line arguments for a single option.

Arguments
$flag
string
$argv
mixed
Details
visibility
protected
final
false
static
false
throws

addArguments

addArguments( array $argv ) : Zend_Console_Getopt

Define additional command-line arguments.

These are appended to those defined when the constructor was called.

Arguments
$argv
array
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false
throws
When not given an array as parameter

addRules

addRules( array $rules ) : Zend_Console_Getopt

Define additional option rules.

These are appended to the rules defined when the constructor was called.

Arguments
$rules
array
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false

getOption

getOption( 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.

Arguments
$flag
string
Output
mixed
Details
visibility
public
final
false
static
false

getOptions

getOptions( ) : array

Return a list of options that have been seen in the current argv.

Output
array
Details
visibility
public
final
false
static
false

getRemainingArgs

getRemainingArgs( ) : array

Return the arguments from the command-line following all options found.

Output
array
Details
visibility
public
final
false
static
false

getUsageMessage

getUsageMessage( ) : 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.

Output
string
Details
visibility
public
final
false
static
false

parse

parse( ) : 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.

Output
Zend_Console_Getopt|null
Provides a fluent interface
Details
visibility
public
final
false
static
false

setAliases

setAliases( 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.

Arguments
$aliasMap
array
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false
throws

setArguments

setArguments( array $argv ) : Zend_Console_Getopt

Define full set of command-line arguments.

These replace any currently defined.

Arguments
$argv
array
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false
throws
When not given an array as parameter

setHelp

setHelp( 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.

Arguments
$helpMap
array
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false

setOption

setOption( 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.

Arguments
$configKey
string
$configValue
string
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false

setOptions

setOptions( 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.

Arguments
$getoptConfig
array
Output
Zend_Console_Getopt
Provides a fluent interface
Details
visibility
public
final
false
static
false

toArray

toArray( ) : 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.

Output
array
Details
visibility
public
final
false
static
false

toJson

toJson( ) : string

Return the current set of options and parameters seen in Json format.

Output
string
Details
visibility
public
final
false
static
false

toString

toString( ) : string

Return the current set of options and parameters seen as a string.

Output
string
Details
visibility
public
final
false
static
false

toXml

toXml( ) : string

Return the current set of options and parameters seen in XML format.

Output
string
Details
visibility
public
final
false
static
false
Documentation was generated by DocBlox.