getopt în PHP

Procese și mediu PHP 4.3+ (pe Windows: PHP 5.3+)

Citește opțiunile date unui script în linia de comandă, de exemplu -v sau --fisier=produse.csv.

Sintaxă
getopt(string $short_options, array $long_options = [], &$rest_index = null): array|false

Ce face getopt

getopt interpretează argumentele din linia de comandă. Opțiunile scurte se descriu într-un text: "v" (fără valoare), "f:" (valoare obligatorie), "l::" (valoare opțională). Opțiunile lungi se dau într-un tablou, cu aceleași semne: ["fisier:", "test"].

Rezultatul este un tablou cu opțiunile găsite. O opțiune fără valoare are valoarea false, deci verifici existența cu isset sau array_key_exists.

Parametri

Parametru Descriere
$short_options Opțiunile scurte, de exemplu "vf:".
$long_options Opțional. Opțiunile lungi, de exemplu ["fisier:", "test"].
$rest_index Opțional. Variabilă în care se pune poziția primului argument care nu este opțiune.

Ce returnează

Un tablou cu opțiunile găsite sau false la eroare.

Exemple

Exemplul 1: Script de import cu opțiuni

<?php
$optiuni = getopt("v", ["fisier:", "test"]);

$fisier = $optiuni["fisier"] ?? "produse.csv";
$detaliat = isset($optiuni["v"]);
$test = isset($optiuni["test"]);

echo "Import din $fisier" . ($test ? " (test)" : "") . ($detaliat ? ", cu detalii" : "") . "\n";
var_dump($optiuni);

Rezultat pentru: php import.php -v –fisier=clienti.csv

Import din clienti.csv, cu detalii
array(2) {
  ["v"]=>
  bool(false)
  ["fisier"]=>
  string(11) "clienti.csv"
}

Greșeli frecvente

  • Verifici o opțiune fără valoare cu if ($optiuni["v"]). Valoarea ei este false, deci condiția nu e îndeplinită niciodată. Folosește isset($optiuni["v"]).

Comenzi înrudite

  • php_sapi_name: Returnează modul în care rulează PHP: cli (linia de comandă), fpm-fcgi, apache2handler și altele.
  • getenv / putenv: Citește o variabilă de mediu (getenv) sau setează una pentru procesul curent (putenv).
  • exec: Rulează o comandă a sistemului de operare și returnează ultima linie afișată de ea.