Всем привет. Сегодня будем разбираться, как получить список аргументов php-скрипта, запущенного из консоли.
Обычно запуск скрипта выглядит так:
Как же получить переданные в командной строке аргументы
Для этого в php есть две зарезервированные переменные:
Как и любые другие глобальные переменные в скрипте,
Однако, выведя на экран содержимое суперглобальной переменной
В случае если вы хотите передавать именованные аргументы, например:
то php их никак не парсит и просто выдает в
Для парсинга таких входных данных существует функция
Обычно запуск скрипта выглядит так:
> php script.php run 20 zzz
// или если у скрипта есть право на исполнение
> ./script.php run 20 zzz
Как же получить переданные в командной строке аргументы
run, 20, zzz
?Для этого в php есть две зарезервированные переменные:
$argv
- массив, содержит список аргументов. При этом учтите, что имя исполняемого скрипта также является аргументом командной строки и присутствует в списке аргументов. Поэтому, чтобы обратиться к значениюrun
из нашего примера требуется использовать$argv[1]
, а не 0, так как$argv[0]
- этоscript.php
, офссылка.$argc
- число, содержит количество переданных аргументов, также учитывается имя исполняемого скрипта. Для нашего примера$argc
равно 4, офссылка.
Как и любые другие глобальные переменные в скрипте,
$argv
и $argc
не защищены от перезаписи. Так что если вы где-то в вашем скрипте напишете $argv = 42;
то все ваши входные аргументы будут потеряны. Также, эти переменные не являются суперглобальными, то есть использовать их в функциях без явного указания global
(фу) или передачи как аргумент функции - не получится.Однако, выведя на экран содержимое суперглобальной переменной
$_SERVER
можно заметить, что данные из $argv
и $argc
дублируются в аналогичных ключах массива $_SERVER
- argv
и argc
.В случае если вы хотите передавать именованные аргументы, например:
> php script.php --action=run --time=20 --option=zzz
то php их никак не парсит и просто выдает в
$argv
массив вида:
Array
(
[0] => script.php
[1] => --action=run
[2] => --time=20
[3] => --option=zzz
)
Для парсинга таких входных данных существует функция
getopt
, но ее рассмотрение - это повод для отдельного поста.
Комментариев нет:
Отправить комментарий