TigerZF
🌐Español

23.4. Configurar Zend_Console_Getopt

23.4.1. Añadir reglas de opciones

Puede añadir más reglas de opciones además de las especificadas en el constructor de Zend_Console_Getopt, usando el método addRules(). El argumento de addRules() es el mismo que el primer argumento del constructor de la clase. Es una cadena en el formato de la especificación de opciones de sintaxis corta, o bien un array asociativo en el formato de una especificación de opciones de sintaxis larga. Consulte Declarar reglas de Getopt para más detalles sobre la sintaxis para especificar opciones.

Ejemplo 23.7. Uso de addRules()

$opts = new Zend_Console_Getopt('abp:');
$opts->addRules(
  array(
    'verbose|v' => 'Print verbose output'
  )
);

El ejemplo anterior muestra cómo añadir la opción --verbose con un alias -v a un conjunto de opciones definidas en la llamada al constructor. Observe que puede mezclar opciones de formato corto y opciones de formato largo en la misma instancia de Zend_Console_Getopt.

23.4.2. Añadir mensajes de ayuda

Además de especificar las cadenas de ayuda al declarar reglas de opciones en el formato largo, puede asociar cadenas de ayuda con las reglas de opciones usando el método setHelp(). El argumento del método setHelp() es un array asociativo, en el que la clave es un flag y el valor es una cadena de ayuda correspondiente.

Ejemplo 23.8. Uso de setHelp()

$opts = new Zend_Console_Getopt('abp:');
$opts->setHelp(
    array(
        'a' => 'apple option, with no parameter',
        'b' => 'banana option, with required integer parameter',
        'p' => 'pear option, with optional string parameter'
    )
);

Si declaró opciones con alias, puede usar cualquiera de los alias como clave del array asociativo.

El método setHelp() es la única forma de definir cadenas de ayuda si declaró las opciones usando la sintaxis corta.

23.4.3. Añadir alias de opciones

Puede declarar alias para las opciones usando el método setAliases(). El argumento es un array asociativo, cuya clave es una cadena de flag declarada previamente, y cuyo valor es un nuevo alias para ese flag. Estos alias se combinan con los alias existentes. En otras palabras, los alias que declaró anteriormente siguen en vigor.

Un alias solo puede declararse una vez. Si intenta redefinir un alias, se lanza una Zend_Console_Getopt_Exception.

Ejemplo 23.9. Uso de setAliases()

$opts = new Zend_Console_Getopt('abp:');
$opts->setAliases(
    array(
        'a' => 'apple',
        'a' => 'apfel',
        'p' => 'pear'
    )
);

En el ejemplo anterior, tras declarar estos alias, -a, --apple y --apfel son alias entre sí. Del mismo modo, -p y --pear son alias entre sí.

El método setAliases() es la única forma de definir alias si declaró las opciones usando la sintaxis corta.

23.4.4. Añadir listas de argumentos

Por defecto, Zend_Console_Getopt usa $_SERVER['argv'] como el array de argumentos de línea de comandos a analizar. Alternativamente, puede especificar el array de argumentos como segundo argumento del constructor. Finalmente, puede añadir más argumentos a los ya usados mediante el método addArguments(), o puede reemplazar el array actual de argumentos usando el método setArguments(). En ambos casos, el parámetro de estos métodos es un simple array de cadenas. El primer método añade el array a los argumentos actuales, y el segundo método sustituye el array por los argumentos actuales.

Ejemplo 23.10. Uso de addArguments() y setArguments()

// By default, the constructor uses $_SERVER['argv']
$opts = new Zend_Console_Getopt('abp:');

// Append an array to the existing arguments
$opts->addArguments(array('-a', '-p', 'p_parameter', 'non_option_arg'));

// Substitute a new array for the existing arguments
$opts->setArguments(array('-a', '-p', 'p_parameter', 'non_option_arg'));

23.4.5. Añadir configuración

El tercer parámetro del constructor de Zend_Console_Getopt es un array de opciones de configuración que afectan al comportamiento de la instancia de objeto devuelta. También puede especificar opciones de configuración usando el método setOptions(), o puede establecer una opción individual usando el método setOption().

[Note] Aclarando el término "opción"

El término "opción" se usa para la configuración de la clase Zend_Console_Getopt para coincidir con la terminología usada en otras partes de Zend Framework. Estas no son las mismas cosas que las opciones de línea de comandos analizadas por la clase Zend_Console_Getopt.

Las opciones actualmente admitidas tienen definiciones de constantes en la clase. Las opciones, sus identificadores de constante (con valores literales entre paréntesis) se enumeran a continuación:

  • Zend_Console_Getopt::CONFIG_DASHDASH ("dashDash"), si es TRUE, habilita el flag especial -- para indicar el final de los flags. Los argumentos de línea de comandos posteriores al indicador de doble guion no se interpretan como opciones, incluso si los argumentos comienzan con un guion. Esta opción de configuración es TRUE por defecto.

  • Zend_Console_Getopt::CONFIG_IGNORECASE ("ignoreCase"), si es TRUE, hace que los flags sean alias entre sí si difieren solo en mayúsculas y minúsculas. Es decir, -a y -A se considerarán flags sinónimos. Esta opción de configuración es FALSE por defecto.

  • Zend_Console_Getopt::CONFIG_RULEMODE ("ruleMode") puede tener los valores Zend_Console_Getopt::MODE_ZEND ("zend") y Zend_Console_Getopt::MODE_GNU ("gnu"). No debería ser necesario usar esta opción a menos que extienda la clase con formas de sintaxis adicionales. Los dos modos admitidos en la clase base Zend_Console_Getopt no son ambiguos. Si el especificador es una cadena, la clase asume MODE_GNU, de lo contrario asume MODE_ZEND. Pero si extiende la clase y añade más formas de sintaxis, puede necesitar especificar el modo usando esta opción.

Pueden añadirse más opciones de configuración como futuras mejoras de esta clase.

Los dos argumentos del método setOption() son un nombre de opción de configuración y un valor de opción.

Ejemplo 23.11. Uso de setOption()

$opts = new Zend_Console_Getopt('abp:');
$opts->setOption('ignoreCase', true);

El argumento del método setOptions() es un array asociativo. Las claves de este array son los nombres de las opciones de configuración, y los valores son los valores de configuración. Este es también el formato de array usado en el constructor de la clase. Los valores de configuración que especifique se combinan con la configuración actual; no es necesario listar todas las opciones.

Ejemplo 23.12. Uso de setOptions()

$opts = new Zend_Console_Getopt('abp:');
$opts->setOptions(
    array(
        'ignoreCase' => true,
        'dashDash'   => false
    )
);