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

Comment obtenir les paramètres en mode php cli

jacklove
Libérer: 2023-03-31 06:22:02
original
1963 Les gens l'ont consulté

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 Utilisez le tableau argv

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

Créer test.php

<?phpprint_r($argv);?>
Copier après la connexion
Exécuter sur la ligne de commande

php test.php news 1 5
Copier après la connexion
Copier après la connexion
Sortie :

Array(
    [0] => test.php
    [1] => news
    [2] => 1
    [3] => 5)
Copier après la connexion
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 à la valeur du type
argv[2] est égal à la valeur de is_hot
argv[3] est égal au valeur de la limite
De cette façon, les paramètres transmis peuvent être obtenus en fonction du tableau argv pour un traitement ultérieur.

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);?>
Copier après la connexion
Exécution

php test.php news 1 5
Copier après la connexion
Copier après la connexion
Sortie :

Array(
    [type] => news
    [is_hot] => 1
    [limit] => 5)
Copier après la connexion

Les paramètres sont obtenus dans un ordre différent. les valeurs seront différentes, entraînant des erreurs dans les programmes suivants

Exécution

php test.php 1 5 news
Copier après la connexion
Sortie :

Array(
    [type] => 1
    [is_hot] => 5
    [limit] => news
)
Copier après la connexion

Ainsi, lors de l'utilisation du argv tableau pour passer les paramètres, Il faut faire attention à l'ordre de passage des paramètres.

2. Utilisez la méthode getopt

getopt pour obtenir les options de la liste des paramètres de ligne de commande

array getopt ( string $options [, array $longopts ] )
Copier après la connexion

Paramètres :
options Chaque caractère de cette chaîne sera traité comme un caractère d'option. 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 Tableau 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 (n'accepte pas de valeur)
Un caractère suivi de deux points (cette option nécessite une valeur)
Suivi de deux caractères deux-points (la valeur de cette option est facultative) La valeur de l'option
est le premier paramètre 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 délimiteurs, seul = peut être utilisé comme délimiteurs.

Valeur de retour

Cette fonction renvoie un couple 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'est pas une valeur acceptée

<?php$param = getopt(&#39;a:b:c:d::e&#39;);
print_r($param);?>
Copier après la connexion
Exécuter

php test.php -a 1 -b 2 -c 3 -d=4 -e 5
Copier après la connexion
Sortie :

Array(
    [a] => 1
    [b] => 2
    [c] => 3
    [d] => 4
    [e] => 
)
Copier après la connexion
2. Utilisez l'instance longopts

type, is_hot est la valeur requise

limit est la valeur facultative
expire Si la valeur

<?php$longopt = array(    &#39;type:&#39;,    &#39;is_hot:&#39;,    &#39;limit::&#39;,    &#39;expire&#39;);$param = getopt(&#39;&#39;, $longopt);
print_r($param);?>
Copier après la connexion
Copier après la connexion
n'est pas acceptée, exécutez

php test.php --type news --is_hot 1 --limit=10 --expire=100
Copier après la connexion
et affichez :

Array(
    [type] => news
    [is_hot] => 1
    [limit] => 10
    [expire] => 
)
Copier après la connexion
3. instances suivantes

<?php$longopt = array(    &#39;type:&#39;,    &#39;is_hot:&#39;,    &#39;limit::&#39;,    &#39;expire&#39;);$param = getopt(&#39;&#39;, $longopt);
print_r($param);?>
Copier après la connexion
Copier après la connexion
Exécution

php test.php --type news --is_hots 1 --limit=10 --expire=100
Copier après la connexion
Sortie :

Array
(
    [type] => news
)
Copier après la connexion
Parce que is_hots n'est pas une valeur d'option (is_hot est défini), tous les paramètres à partir de maintenant sont écartés.


Résumé : Utilisez le tableau argv pour transmettre les 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é)

Cet article présente la méthode d'obtention des paramètres en mode php cli Pour plus de contenu connexe, veuillez faire attention au site Web php chinois.

Recommandations associées :

Comment obtenir de manière récursive la valeur d'une clé spécifiée dans un tableau via du code PHP

Lecture d'une taille de fichier de 1 Go via PHP

Explication du code de la fonction d'initialisation de la classe PHP

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!

Étiquettes associées:
php
Déclaration de ce site Web
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
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal