getopt
是 PHP 中的一個命令行參數解析函數,它允許你定義自己的輸出格式
<?php
// 定義一個名為 my_getopt 的函數,用于解析命令行參數
function my_getopt($options, $args) {
$opt = [];
$long_opts = [];
// 將選項字符串轉換為長選項數組
foreach ($options as $option => $value) {
$long_opts[] = $option . ($value === true ? '=' : ':');
}
// 使用 getopt 解析命令行參數
$options = getopt($long_opts, $args);
// 遍歷解析后的選項
while (isset($options[$option])) {
$opt[$option] = $options[$option] === true ? true : $options[$option];
unset($options[$option]);
}
return $opt;
}
// 定義命令行選項
$options = [
'f|file=s' => 'input-file',
'o|output=s' => 'output-file',
'h|help' => 'show help',
];
// 解析命令行參數
$opt = my_getopt($options, []);
// 自定義輸出格式
function print_help() {
echo "Usage: script.php [options]\n";
echo "Options:\n";
foreach ($options as $option => $description) {
$value = isset($opt[$option]) ? " ($opt[$option])" : '';
echo " -{$option}$value $description\n";
}
}
function print_version() {
echo "Script version 1.0\n";
}
// 根據解析后的選項執行相應操作
if (isset($opt['h'])) {
print_help();
exit(0);
} elseif (isset($opt['v'])) {
print_version();
exit(0);
} elseif (isset($opt['f']) && isset($opt['o'])) {
$input_file = $opt['f'];
$output_file = $opt['o'];
echo "Processing file: $input_file\n";
echo "Output file: $output_file\n";
} else {
print_help();
exit(1);
}
在這個示例中,我們定義了一個名為 my_getopt
的函數,它接受一個選項字符串和一個參數數組。然后,我們使用 getopt
函數解析命令行參數,并將結果存儲在 $opt
數組中。接下來,我們定義了兩個自定義函數 print_help
和 print_version
,用于以自定義格式輸出幫助信息和版本信息。最后,我們根據解析后的選項執行相應的操作。