通常情况下是在执行命令时输入参数,在程序运行当中怎么输入命令呢?我们可以修改文件/Redis/MySQL的内容,PHP轮询查询它们的内容来决定运行不同的程序流程,但这样太麻烦了,我们是可以直接在控制台的屏幕中输入内容交给程序的,下面我们来看看PHP在CLI模式下运行时的三种获取参数方式。
一、变量$argv
<?php //文件名:demo.phpvar_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.phpdo { echo '您想输入啥:'; $str = fgets(STDIN);//获取一行字符(包含末尾回车符) if(preg_match('/\s*exit\s*/i', $str)){ exit("Byby!\r\n"); } echo '您输入了:' . $str; echo "==============================\r\n";}while(true);
fgets() 函数从文件指针中读取一行。具体查阅PHP文档
STDIN: 只读,可以拿到在控制台下输入的内容,fgets读取这个STDIN文件句柄,即可打印出刚才输入的内容;
STDOUT: 只写,用于向控制台输出正常信息;
STDERR: 只写,用于向控制台输出错误信息;
在控制台执行:
php demo.php
会提示你输入内容,输入内容后按回车即表示完成输入,之后会打印出你输入的内容。如果你输入的是exit则会退出程序的运行。这里写了一个死循环,你可以按 ctrl+c退出程序,也可以输入exit+回车退出程序,前者是控制台自带的特性,后者是程序中实现的。使用STDIN的方法程序是会等待的,直到你输入回车才会继续运行。使用这种方式,你的程序就可以在运行中与用户进行互动了。