Аргерих Л. О языке РНР. Часть 4. Страница 125


PHP допускает такую передачу аргументов командной строки в сценарий. Он устанавливает две переменные: $argc, в которой содержится количество аргументов командной строки, переданных сценарию, и $argv[], представля­ющую собой массив с фактическими аргументами, переданными сценарию.

Элемент всегда содержит имя выполняемого сценария РНР, в на­

шем случае mail_stats. php, $argv[ 1 ] содержит первый аргумент командной строки, $argv[2] - второй аргумент, $argv[n] - n-й аргумент. Чтобы наш сце­нарий принимал аргументы из командной строки, мы должны убедиться, что передано правильное количество аргументов, и присвоить аргументы нужным переменным. Это выполняет следующий код:

if ($агдс ! - 3) {

echo("usage: mail_stats.php logfile administrators„email"); exit; : .

}

Slogfile = $argv[l]; $admin_email = $argv[2];

Сначала проверяем количество аргументов. Если оно неверное, выводим со­общение и завершаем сценарий, в противном случае присваиваем правиль­ные значения переменным, которые будут использоваться в сценарии. Если с этим сценарием будет работать кто-то другой, возможно, стоит проверить до­пустимость $argv[ 1] и $argv[2]; эта возможность не была включена для упро­щения примера. Однако при необходимости можно поместить приведенные выше строки в сценарий mai l_stats. php вместо следующих:

:../*"-- Переменные, используемые в сценарии -- */ Slogfile = "./access.log"; $admin„email = "admin@localhost";

Интерактивные сценарии

Если вы установили библиотеку libedit и включили ее поддержку в РНР, то можете также создавать интерактивные сценарии. Это расширение предо­ставляет функциональность, позволяющую программисту запрашивать ко­манды у пользователя в командной строке. Приведенный ниже код реализу­ет небольшую игру с угадыванием:

<?php

$play = "у";

while ($play == "у") {

Инициализируем переменную, используемую в каждой игре, значением чтобы прежние сыгранные игры не влияли на текущую:

$correct = false;

В следующих строках у пользователя запрашивается максимальное число, которое он готов отгадывать, и количество попыток. В этом сценарии нет проверки данных, введенных пользователем. В качестве упражнения реко­мендуем читателю организовать передачу этих переменных через команд­ную строку при запуске сценария:

$max = readline("Maximum possible value: $no_of_guesses = readline("No of guesses: ");

Затем устанавливаем начальное значение генератора случайных чисел. Это существенно, потому что иначе крайне важные случайные числа окажутся не совсем случайными: