Maison >développement back-end >tutoriel php >Comment obtenir des paramètres en php en mode cli
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['type'] = $argv[1]; $param['is_hot'] = $argv[2]; $param['limit'] = $argv[3]; print_r($param); ?>
Exécuter
php test.php news 1 5
Sortie :
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 news
Sortie :
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('a:b:c:d::e'); print_r($param); ?>
Exécution
php test.php -a 1 -b 2 -c 3 -d=4 -e 5
Sortie :
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( 'type:', 'is_hot:', 'limit::', 'expire' ); $param = getopt('', $longopt); print_r($param); ?>
Exécuter
php test.php --type news --is_hot 1 --limit=10 --expire=100
Sortie :
Array ( [type] => news [is_hot] => 1 [limit] => 10 [expire] => )
3. instances
<?php $longopt = array( 'type:', 'is_hot:', 'limit::', 'expire' ); $param = getopt('', $longopt); print_r($param); ?>
Exécuter
php test.php --type news --is_hots 1 --limit=10 --expire=100
Sortie :
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é)
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!