最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

PHP在cli下运行时怎么输入指令与程序交互?

XAMPP新闻 admin 67浏览 0评论
通常情况下是在执行命令时输入参数,在程序运行当中怎么输入命令呢?我们可以修改文件/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的方法程序是会等待的,直到你输入回车才会继续运行。使用这种方式,你的程序就可以在运行中与用户进行互动了。

AAA00000000019

通常情况下是在执行命令时输入参数,在程序运行当中怎么输入命令呢?我们可以修改文件/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的方法程序是会等待的,直到你输入回车才会继续运行。使用这种方式,你的程序就可以在运行中与用户进行互动了。

转载请注明:XAMPP中文组官网 » PHP在cli下运行时怎么输入指令与程序交互?