PHP getopt Операции

Этот вопрос расценивает функцию getopt в php. Я должен передать два параметра сценариям PHP как

php script.php -f filename -t filetype

Теперь в зависимости от типа файла, который может быть u, c или s, я должен сделать правильное функционирование.

Я использую случай переключателя для того же:

Вот Код, который я использую:

// Get filename of input file when executing through command line.
$file = getopt("f:t:");

Случай переключателя должен сравнить тип файла, в котором я являюсь передающим из командной строки (u, c или i) и соответственно соответствую ему и делаю операцию.

switch("I am not sure what should go in there and this is wrong,Please advice")
    {

        case `Not sure`:
            $p->ini();
            break;

        case `Not sure`:
            $p->iniCon();
            break;

        case `Not sure`:
            $p->iniImp();
            break;
    }

Любезно консультируйте по вопросам этого!!!

10
задан Rachel 11 March 2010 в 17:22
поделиться

2 ответа

Если вы просто поместите что-то подобное в свой PHP-скрипт (на моей машине он называется temp.php ) :

<?php
$file = getopt("f:t:");
var_dump($file);

И вызовите его из командной строки, передавая эти два параметра:

php temp.php -f filename -t filetype

Вы получите такой вывод:

array(2) {
  ["f"]=>
  string(8) "filename"
  ["t"]=>
  string(8) "filetype"
}

Это означает, что:

  • $ file ['f'] содержит значение, переданное для -f
  • и $ file ['t'] содержит значение, переданное для -t


Начиная с этого места, если вы хотите, чтобы ваш переключатель зависел от параметра, переданного как значение -t , вы будете использовать что-то вроде этого:

switch ($file['t']) {
    case 'u':
            // ...
        break;
    case 'c':
            // ...
        break;
    case 'i':
            // ...
        break;
}

Обычно вы помещаете:

  • Переменная, которую вы хотите проверить, в switch ()
  • И возможные значения в case s


И, для получения дополнительной информации, вы можете прочитать в руководстве по PHP:

18
ответ дан 3 December 2019 в 16:09
поделиться

В вашем подходе есть проблема. Что делать, если пользователь по ошибке вводит следующую командную строку. сценарий не сможет его обнаружить и завершится ошибкой, поскольку $ file ['t'] будет массивом.

php temp.php -f filename -t filetype -f filename2
0
ответ дан 3 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: