YiluPHP
这家伙很懒,什么都没有留下...

经验 PHP在CLI模式下运行时的三种获取参数方式

浏览数 131248 最后修改时间

一、变量$argv

<?php
//文件名:demo.php
var_dump($argv);
在控制台执行:
php demo.php aaa bbb ccc
输出:
array(4) {
        [0]=>
  string(10) "demo.php"
        [1]=>
  string(3) "aaa"
        [2]=>
  string(3) "bbb"
        [3]=>
  string(3) "ccc"
}

二、函数getopt()

<?php
//文件名:demo.php
    $options = getopt('a:b:', ['c:', 'd::']);
    var_dump($options);
在控制台执行:
php demo.php -aaa -bbb --c="cc" --d="dd"
输出:
array(4) {
        ["a"]=>
  string(2) "aa"
        ["b"]=>
  string(2) "bb"
        ["c"]=>
  string(2) "cc"
        ["d"]=>
  string(2) "dd"
}

三、文件句柄STDIN

<?php
//文件名:demo.php
do {
    echo '您想输入啥:';
    $str = fgets(STDIN);//获取一行字符(包含末尾回车符)
    if(preg_match('/s*exits*/i', $str)){
        exit("Byby!
");
    }
    echo '您输入了:' . $str;
    echo "==============================
";
}
while(true);

fgets() 函数从文件指针中读取一行。具体查阅PHP文档
STDIN: 只读,可以拿到在控制台下输入的内容,fgets读取这个STDIN文件句柄,即可打印出刚才输入的内容
STDOUT: 只写,用于向控制台输出正常信息;
STDERR: 只写,用于向控制台输出错误信息;
在控制台执行:
php demo.php
会提示你输入内容,输入内容后按回车即表示完成输入,之后会打印出你输入的内容。如果你输入的是exit则会退出程序的运行。这里写了一个死循环,你可以按 ctrl+c退出程序,也可以输入exit+回车退出程序,前者是控制台自带的特性,后者是程序中实现的。使用STDIN的方法程序是会等待的,直到你输入回车才会继续运行。使用这种方式,你的程序就可以在运行中与用户进行互动了。



我来说说