Maison >développement back-end >tutoriel php >Comment obtenir des paramètres en php en mode cli

Comment obtenir des paramètres en php en mode cli

墨辰丷
墨辰丷original
2018-05-23 09:32:211980parcourir

Cet article présente principalement la méthode d'obtention des paramètres en mode php cli, qui a une bonne valeur de référence. Jetons un coup d'œil avec l'éditeur ci-dessous

Il existe deux façons pour PHP de recevoir des paramètres en mode cli

1 Utilisez le tableau argv.

2. Utilisez la méthode getopt

1. 🎜 >Par exemple : vous devez exécuter un php et passer trois paramètres (type=news, is_hot=1, limit=5)

Créer test.php

<?php
print_r($argv);
?>

Exécuter

php test.php news 1 5 depuis la ligne de commande :

Array
(
  [0] => test.php
  [1] => news
  [2] => 1
  [3] => 5
)

Vous pouvez voir que argv[0] est le nom du fichier php actuellement exécuté, et argv[1]~argv[3] sont les valeurs des paramètres passés

argv[1] est égal au type La valeur

argv[2] est égale à la valeur de is_hot

argv[3] est égale à la valeur de limit

De cette façon, les paramètres transmis peuvent être obtenus selon le tableau argv pour les opérations de traitement ultérieures.

Inconvénients : En utilisant le tableau argv, les paramètres passés peuvent être obtenus dans l'ordre. Mais après l'avoir obtenu, un traitement correspondant doit être effectué. Dans l'exemple ci-dessus, argv[1] doit correspondre au paramètre type, argv[2] correspond au paramètre is_hot et argv[3] correspond au paramètre limit. . Et si les paramètres sont écrits dans le mauvais ordre pendant le processus de transfert, cela entraînera une erreur de programme.

Par exemple :

<?php
$param = array();
$param[&#39;type&#39;] = $argv[1];
$param[&#39;is_hot&#39;] = $argv[2];
$param[&#39;limit&#39;] = $argv[3];
print_r($param);
?>

Exécuter

php test.php news 1 5Sortie :

Array
(
  [type] => news
  [is_hot] => 1
  [limit] => 5
)

Si l'ordre de transmission est différent, les valeurs des paramètres obtenues seront différentes, entraînant des erreurs de programme ultérieures

Exécution

php test.php 1 5 newsSortie :

Array
(
  [type] => 1
  [is_hot] => 5
  [limit] => news
)

Donc, lors de l'utilisation de argv tableau pour transmettre les paramètres, vous devez faire attention à l'ordre dans lequel les paramètres sont transmis.

2. Utilisez la méthode getopt getopt pour obtenir les options de la liste d'arguments de la ligne de commande

array getopt ( string $options [, array $longopts ] )

Paramètres :

options dans cette chaîne Chaque caractère est traité comme un caractère d'option et les options correspondant au script entrant commencent par un seul trait d'union (-). Par exemple, une chaîne d'option « x » identifie une option -x. Seuls a-z, A-Z et 0-9 sont autorisés.

longopts gamme d'options. Chaque élément de ce tableau sera traité comme une chaîne d'options, correspondant aux options transmises au script avec deux tirets (–). Par exemple, l'élément d'options long "opt" identifie une option -opt.

les options peuvent contenir les éléments suivants : Un seul caractère (aucune valeur acceptée)

Caractère suivi de deux points (Cette option nécessite une valeur)

Caractères suivis de deux deux-points (La valeur de cette option est facultative) La valeur de l'option

est le premier argument après la chaîne. Cela ne me dérange pas s'il y a des espaces avant la valeur.

Les formats d'options et de longopts sont presque les mêmes, la seule différence est que longopts doit être un tableau d'options (chaque élément est une option), tandis que les options ont besoin d'une chaîne (chaque caractère est une option) .

Le séparateur de valeurs peut être un espace ou =.

Les valeurs facultatives n'acceptent pas les espaces comme séparateurs, seul = peut être utilisé comme séparateurs.

Valeur de retour

Cette fonction renvoie une paire option/paramètre, ou FALSE en cas d'échec.

L'analyse des options se terminera à la première non-option trouvée, tout ce qui suit sera rejeté.

1. Utiliser l'instance d'options a, b, c sont des valeurs obligatoires

d est une valeur facultative

e n'accepte pas la valeur

<?php
$param = getopt(&#39;a:b:c:d::e&#39;);
print_r($param);
?>

Exécution

php test.php -a 1 -b 2 -c 3 -d=4 -e 5Sortie :

Array
(
  [a] => 1
  [b] => 2
  [c] => 3
  [d] => 4
  [e] => 
)

2. Utilisez l'instance longoptstype, is_hot est le type requis. value

limit est une valeur facultative

expire est une valeur inacceptable

<?php
$longopt = array(
  &#39;type:&#39;,
  &#39;is_hot:&#39;,
  &#39;limit::&#39;,
  &#39;expire&#39;
);
$param = getopt(&#39;&#39;, $longopt);
print_r($param);
?>

Exécuter

php test.php --type news --is_hot 1 --limit=10 --expire=100Sortie :

Array
(
  [type] => news
  [is_hot] => 1
  [limit] => 10
  [expire] => 
)

3. instances

<?php
$longopt = array(
  &#39;type:&#39;,
  &#39;is_hot:&#39;,
  &#39;limit::&#39;,
  &#39;expire&#39;
);
$param = getopt(&#39;&#39;, $longopt);
print_r($param);
?>

Exécuter

php test.php --type news --is_hots 1 --limit=10 --expire=100Sortie :

Array
(
  [type] => news
)

Parce que is_hots n'est pas une valeur d'option (is_hot est défini), tous les paramètres à partir de maintenant sont ignorés.

Résumé :

Utilisez le tableau argv pour passer des paramètres, la méthode est simple et facile à mettre en œuvre. L'ordre des paramètres ne peut pas être erroné et le traitement correspondant doit être effectué une fois les paramètres obtenus.

En utilisant la méthode getopt, vous pouvez utiliser des noms de paramètres, et l'ordre des paramètres peut être arbitraire, ce qui est relativement standardisé. (Recommandé)

Recommandations associées :

Solution pour la comparaison et l'arrondi inexacts des calculs en virgule flottante en PHPBases de _php

PHPExplication du code principal des bases du fichier upload_php

php statistiques simples en ligne Nombre de personnes method_php compétences

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn