我不是技术
PHP成长
ARTICLE
linux相关
ARTICLE
其他类别
ARTICLE
文章
> [PHP-cli]thinkphp6.0命令行中的交互
13:18
2022/04/28
3261
[PHP-cli]thinkphp6.0命令行中的交互
thinkphp6.0的命令行模式官方文档写得已经很详细了,这里不过多介绍了。 而命令行执行任务需要暂停任务,等待人为交互来处理也很简单。 #### STDIN 一个已打开的指向stdin的流,可以用下方法来调用 ```php $stdin = fopen(‘php://stdin’,’r’); ``` 如果想从stdin读取一行内容,可以使用 ```php $line = trim(fgets(STDIN));//从STDIN读取一行 Fscanf(STDIN,’%d\n’,$number);//从STDIN读取数字 ``` #### STDOUT 一个已打开的指向 stdout的流。可以用如下方式来调用 ```php $stdout = fopen(‘php://stdout’,’w’); ``` #### STDERR 一个已打开的指向 stdout的流。可以用如下方式来调用 ```php $stderr = fopen(‘php://stderr’,’w’); ``` ### 场景:遍历并移动一个目录下的文件,选择是否移动到上一个文件的文件夹 ```php 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); // 从控制台读取输入 } ``` 这里主要就用到两个常量`STDIN`和`STDIN`,大概效果就如下图 