Этот вопрос расценивает функцию 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;
}
Любезно консультируйте по вопросам этого!!!
Если вы просто поместите что-то подобное в свой 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:
switch
] getopt ()
В вашем подходе есть проблема. Что делать, если пользователь по ошибке вводит следующую командную строку. сценарий не сможет его обнаружить и завершится ошибкой, поскольку $ file ['t']
будет массивом.
php temp.php -f filename -t filetype -f filename2