6.2. Déclarer les règles Getopt

Le constructeur de la classe Zend_Console_Getopt prend un à trois arguments. Le premier argument déclare quelles options sont supportées par votre application. Cette classe soutient des formes de syntaxe alternatives pour déclarer les options. Voir les sections ci-dessous pour le format et l'utilisation de ces formes de syntaxe.

Le constructeur prend deux arguments supplémentaires, qui sont facultatifs. Le deuxième argument peut contenir les arguments de la ligne de commande. La valeur par défaut est $_SERVER['argv'].

Le troisième argument du constructeur peut contenir des options de configuration pour adapter le comportement de Zend_Console_Getopt. Voir Ajouter une configuration pour la référence des options disponibles.

6.2.1. Déclarer des options avec la syntaxe courte

Zend_Console_Getopt supporte une syntaxe compacte semblable à cela employée par GNU Getopt (voir http://www.gnu.org/software/libc/manual/html_node/Getopt.html). Cette syntaxe supporte seulement des drapeaux courts (1 seul caractère). Dans une chaîne de caractère unique, vous entrez chacune des lettres qui correspondent aux drapeaux supportés par votre application. Une lettre suivie d'un caractère de deux points (":") indique un drapeau qui exige un paramètre.

Exemple 6.1. Utiliser la syntaxe courte

<?php
require_once 'Zend/Console/Getopt.php';
$opts = new Zend_Console_Getopt('abp:');
?>

L'exemple ci-dessus montre l'utilisation de Zend_Console_Getopt pour déclarer que des options peuvent être données en tant que "-a", "-b" ou "-p". Le dernier drapeau exige un paramètre.

La syntaxe courte est limitée aux drapeaux courts (1 seul caractère). Les alias, les types des paramètres, et les messages d'aide ne sont pas supportés dans la syntaxe courte.

6.2.2. Déclarer des options avec la syntaxe longue

Une syntaxe différente avec plus de possibilités est également disponible. Cette syntaxe permet d'indiquer des alias pour les drapeaux, les types de paramètres d'option, et aussi des messages d'aide pour décrire l'utilisation à l'utilisateur. Au lieu d'utiliser une chaîne de caractère unique comme pour la syntaxe courte, la syntaxe longue emploie une tableau associatif comme premier argument du constructeur pour déclarer les options.

La clé de chaque élément du tableau associatif est une chaîne avec un format qui nomme le drapeau, avec tous ses alias, séparés par le symbole "|". Après la série des alias, si l'option exige un paramètre, il y a un symbole égal ("=") avec une lettre qui représente le type du paramètre :

  • "=s" pour un paramètre de type chaine de caractère

  • "=w" pour un paramètre de type mot (une chaine de caractère qui ne contient pas d'espace)

  • "=i" paramètre de type entier (integer)

Si le paramètre est optionel, on utilise le tiret ("-") au lieu du symbole égal.

La valeur de chaque élément dans le tableau associatif est un message d'aide pour décrire à l'utilisateur comment employer votre programme.

Exemple 6.2. Utiliser la syntaxe longue

<?php
require_once 'Zend/Console/Getopt.php';
$opts = new Zend_Console_Getopt(
  array(
    'abricot|a'    => 'Cette option choisit abricot, sans parametres',
    'banane|b=i' => 'Cette option choisit banane, avec un parametre obligatoire de type entier',
    'pear|p-s'   => 'Cette option choisit pear, avec un parametre optionel de type chaine de caracteres'
  )
);
?>
            

Dans l'exemple ci-dessus, il y a trois options. "--abricot" and "-a" sont des alias l'un pour l'autre et l'option ne prend pas de paramètres. "--banane" and "-b" sont des alias l'un pour l'autre et l'option prend un paramètre obligatoire de type entier. Enfin, "--pear" and "-p" sont des alias l'un pour l'autre et l'option prend un paramètre optionel de type chaîne de caractère.