#PHP成长

[PHP-cli]thinkphp6.0命令行中的交互

thinkphp6.0的命令行模式官方文档写得已经很详细了,这里不过多介绍了。 而命令行执行任务需要暂停任务,等待人为交互来处理也很简单。

STDIN

一个已打开的指向stdin的流,可以用下方法来调用

$stdin = fopen(‘php://stdin’,’r’);

如果想从stdin读取一行内容,可以使用

$line = trim(fgets(STDIN));//从STDIN读取一行
Fscanf(STDIN,’%d\n’,$number);//从STDIN读取数字

STDOUT

一个已打开的指向 stdout的流。可以用如下方式来调用

$stdout = fopen(‘php://stdout’,’w’);

STDERR

一个已打开的指向 stdout的流。可以用如下方式来调用

$stderr = fopen(‘php://stderr’,’w’);

场景:遍历并移动一个目录下的文件,选择是否移动到上一个文件的文件夹

fwrite(STDOUT, '--------是否移动到上一个文件所在文件夹 Y or N? ');
                $input = fgets(STDIN);
                $continue = true;
                while ($continue){
                    if ($input == 'y'.PHP_EOL){
                        echo '----移动到[文件夹]'.PHP_EOL;
                        break;
                    }else{
                        if (is_dir($out_path.DIRECTORY_SEPARATOR.$value_dir)){
                            echo '----[文件夹]文件夹已存在'.PHP_EOL;
                        }else{
                            mkdir($out_path.DIRECTORY_SEPARATOR.$value_dir,0755,true);
                            echo '----创建文件夹[文件夹]'.PHP_EOL;
                        }
                        echo '----移动到文件夹'.PHP_EOL;
                        break;
                    }
                    $input = fgets(STDIN);  // 从控制台读取输入
                }

这里主要就用到两个常量STDINSTDIN,大概效果就如下图

← 返回首页