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
,用于以自定义格式输出帮助信息和版本信息。最后,我们根据解析后的选项执行相应的操作。