Lead developer web


#PHP #Symfony #RabbitMQ #Redis #Git #Nginx
#Performance #Quality #Testing

PHP en mode CLI

PHP  

Aujourd'hui nous allons parler de la ligne de commande PHP.

En règle générale, lorsque l'on parle de PHP c'est vrai que l'on pense toute de suite à la partie Web. Donc à l'utilisation d'un serveur web (Apache ou Nginx par exemple), comme nous en avons parlé dans un article précédent.

Mais avant tout, PHP est un langage script. Ce qui signifie que nous pouvons l'utiliser en ligne de commande, simplement comme ceci :

php mon_script.php

Ainsi, il est possible d'utiliser toute la puissance de PHP ;-) directement dans le script PHP.

A noter que pour pouvoir faire ceci il faut bien entendu que PHP soit installé, seul ou avec un serveur Web et que l'exécutable soit accessible directement, sans indiquer le chemin complet).

Si vous souhaitez tester un petit bout de code directement en ligne de commande vous pouvez faire ceci :

php -r 'echo "coucou";'

L'option -r permet donc d'indiquer à PHP d'interprêter et exécuter directement ce qui lui est passé en paramètre.

Vous pouvez passer un ou plusieurs arguments à votre script comme ceci :

php mon_script.php argument1 "argument 3"

Pour connaître le nombre d'arguments il suffit d'utiliser dans votre script la variable $_SERVER['argc']. Et pour accéder aux arguments, la variable $_SERVER['argv'] vous sera utile.

Remarque : Le premier argument sera toujours le nom du script exécuté.

Edit : Comme on me l'a fait remarquer à juste titre, il est également possible d'utiliser les variables $argc et $argv.

Voici un petit exemple de script PHP (qui ne sert pas à grand chose :-)

<?php
$nbArg = $_SERVER['argc'] - 1;
printf('Vous avez passé %d argument(s) %s', $nbArg, PHP_EOL);

if ($nbArg) {
    echo 'Les arguments sont : ';
    for ($i=0; $i<$nbArg; $i++){
        printf('%sArgument %d -> %s', PHP_EOL, $i, $_SERVER['argv'][$i+1]);
    }
}

echo PHP_EOL;

L'exécution suivante :

php mon_script.php argument1 "argument 2"

donne le résultat suivant :

Vous avez passé 2 argument(s) 
Les arguments sont : 
Argument 0 -> argument1
Argument 1 -> argument 2

Bien entendu, la ligne de commande n'est pas à utiliser tout le temps. Il faudra alors peser le pour et le contre par rapport à une autre solution comme le shell. Par exemple, si vous devez faire un script archivant les fichiers de plus de 2 semaines, la solution PHP n'est sûrement pas la meilleure sauf si votre script doit fonctionner sur différentes plateformes comme Windows et Linux.