Lee las opciones pasadas en la línea de comandos

# getopt

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

getopt — Lee las opciones pasadas en la línea de comandos

### Descripción

function getopt(string `$short_options`, array `$long_options` = [], int `&$rest_index` = `null`): array|false

getopt() lee las opciones pasadas en la línea de comandos.

### Parámetros

`short_options`
  Cada carácter en esta cadena será utilizado como caracteres opcionales y deberá coincidir con las opciones pasadas, comenzando por un guión simple (`-`). Por ejemplo, una cadena opcional `"x"` coincidirá con la opción `-x`. Solo se permiten a-z, A-Z y 0-9.
`long_options`
  Un array de opciones. Cada elemento de este array será utilizado como opción y deberá coincidir con las opciones pasadas, comenzando por un guión doble (`--`). Por ejemplo, un elemento `longopts` `"opt"` coincidirá con la opción `--opt`.
`rest_index`
  Si el parámetro `rest_index` está presente, entonces el índice donde se detuvo el análisis de los argumentos será escrito en esta variable.

El parámetro `short_options` puede contener los siguientes elementos:

- Caracteres individuales (no aceptan valor)
- Caracteres seguidos por un dos-puntos (el parámetro requiere un valor)
- Caracteres seguidos por dos dos-puntos (valor opcional)

Los valores opcionales son los primeros argumentos después de la cadena. Si un valor es requerido, no importa si el valor está seguido de un espacio o no. Ver la nota.

> Nota: Los valores opcionales no aceptan el espacio como separador.

El array de valores `long_options` puede contener:

- String (parámetro no acepta ningún valor)
- String seguido de un dos-puntos (parámetro requiere un valor)
- String seguido de dos dos-puntos (valor opcional)

> Nota:

> El formato de los parámetros `short_options` y `long_options` es idéntico; la única diferencia es que `long_options` toma un array en opción (donde cada elemento es una opción) mientras que `short_options` toma una cadena (donde cada carácter es una opción).

### Valores devueltos

Esta función devuelve un array de opciones/argumentos, o `false` si ocurre un error.

> Nota:

> El análisis de las opciones se detendrá cuando se encuentre la primera opción incorrecta, y todo lo que siga será ignorado.

### Historial de cambios

Versión | Descripción
--- | ---
7.1.0 | Se añadió el parámetro `rest_index`.

### Ejemplos

Ejemplo #1 Ejemplo con getopt(): los fundamentos

    <?php
    // Script example.php
    $options = getopt("f:hp:");
    var_dump($options);
    ?>

    shell> php example.php -fvalue -h

El ejemplo anterior mostrará:

    array(2) {
      ["f"]=>
      string(5) "value"
      ["h"]=>
      bool(false)
    }

Ejemplo #2 Segundo ejemplo con getopt(): Introducción a las opciones largas

    <?php
    // Script example.php
    $shortopts  = "";
    $shortopts .= "f:";  // Valor requerido
    $shortopts .= "v::"; // Valor opcional
    $shortopts .= "abc"; // Estas opciones no aceptan valor

    $longopts  = array(
        "required:",     // Valor requerido
        "optional::",    // Valor opcional
        "option",        // Ningún valor
        "opt",           // Ningún valor
    );
    $options = getopt($shortopts, $longopts);
    var_dump($options);
    ?>

    shell> php example.php -f "value for f" -v -a --required value --optional="optional value" --option

El ejemplo anterior mostrará:

    array(6) {
      ["f"]=>
      string(11) "value for f"
      ["v"]=>
      bool(false)
      ["a"]=>
      bool(false)
      ["required"]=>
      string(5) "value"
      ["optional"]=>
      string(14) "optional value"
      ["option"]=>
      bool(false)
    }

Ejemplo #3 Tercer ejemplo con getopt(): Pasar múltiples opciones

    <?php
    // Script example.php
    $options = getopt("abc");
    var_dump($options);
    ?>

    shell> php example.php -aaac

El ejemplo anterior mostrará:

    array(2) {
      ["a"]=>
      array(3) {
        [0]=>
        bool(false)
        [1]=>
        bool(false)
        [2]=>
        bool(false)
      }
      ["c"]=>
      bool(false)
    }

Ejemplo #4 Ejemplo de getopt(): Utilizando `rest_index`

    <?php
    // Script example.php
    $rest_index = null;
    $opts = getopt('a:b:', [], $rest_index);
    $pos_args = array_slice($argv, $rest_index);
    var_dump($pos_args);

    shell> php example.php -a 1 -b 2 -- test

El ejemplo anterior mostrará:

    array(1) {
      [0]=>
      string(4) "test"
    }

### Ver también

- $argv

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open