php cli 参数的传递

使用 $argv

<?php
print_r($argv);
?>
<p>效果:</p>
<code>
[root@mingming-dev cmdphp]# php index.php -a hello -b lazy
Array
(
    [0] => index.php
    [1] => -a
    [2] => hello
    [3] => -b
    [4] => lazy
)

但是这种做法对于简单的是可以进行参数的传递,但是很容易出现问题,这就好像只是指明了value,但是确没有指明对于的key,时间一长就很难记得到底应该如何调用了,所有只有在需求简单的环境下才推荐使用这种用法。

使用STDOUT 和STDIN

这种做法很类似在C++语言中首先声明了输入输出流~好比cout和cin,这种场景比较适合于有交互性细节的操作:

<?php
fwrite(STDOUT, "Enter your name: ");
$name = trim(fgets(STDIN));
fwrite(STDOUT, "Hello, $name!");
?>

效果:

[root@mingming-dev cmdphp]# php index.php
Enter your name: lazypeople
Hello, lazypeople!

使用get_opt()

这个也是最牛逼的做法了,因为可以指定key和value。

代码:

<?php
        $shortopts = "";
        $shortopts .= "f:";  // Required value
        $shortopts .= "v::"; // Optional value
        $shortopts .= "abc"; // These options do not accept values
        $longopts = array(
            "required:", // Required value
            "optional::", // Optional value
            "option", // No value
            "opt", // No value
        );
        $options = getopt($shortopts, $longopts);
        var_dump($options);
?>

效果:

[root@mingming-dev cmdphp]# php index2.php -f "value for f" -v -a --required value --optional="optional value" --option will
array(6) {
  ["f"]=>
  string(11) "value for f"
  ["v"]=>
  bool(false)
  ["a"]=>
  bool(false)
  ["required"]=>
  string(5) "value"
  ["optional"]=>
  string(14) "optional value"
  ["option"]=>
  bool(false)
}
  1. ┽1:1

    Chrome Hearts(克罗心)
    KATELINNA(卡特琳娜)
    POLO(保罗)
    MILEER(麦丽尔)
    Christian Louboutin(红底鞋/CL/克里斯蒂娜·鲁布托)
    LDa.shechipin.cf