当前位置: 首页 > 后端技术 > PHP

yii2-Console-用yii2开发控制台应用时我的飘飘泉

时间:2023-03-29 18:46:30 PHP

yii2/Console-用yii2开发控制台应用时我的飘飘泉这篇文章对我们学习yii2-queue有很大的帮助。我们经常使用yii2开发命令行应用,也会遇到在命令行中允许用户输入信息、选择等操作。今天给大家介绍的yii2的Console类,可以轻松帮你解决这件事情。有了它,您的命令行应用程序将变得更加强大。为了使学习更容易,我们从问答形式开始。控制台在哪里?Console是yii2的辅助类。文件夹是/vendor/yiisoft/yii2/helpers,里面有BaseConsole和Console。Console类继承自BaseConsole。不允许调用BaseConsole,所以我们都是使用Console类。在代码中,使用例程useyiihelpersConsole;...Console::xxxx()HelloWorld我们在开发yii2的控制台应用时,可以回显一个字符串,这样命令行就会显示出来,那么如何使用控制台实现那个?看代码publicfunctionactionIndex(){Console::output("HelloWorld");}是的,有了Console::output,你可能会说,“这还不如echo简单?”,让我们继续。ColorfulHelloWorld现在我想让Hello是黄色的,World是绿色的,怎么玩?publicfunctionactionIndex(){$hello=Console::ansiFormat("Hello",[Console::FG_YELLOW]);$world=Console::ansiFormat("World",[Console::FG_GREEN]);Console::output("{$hello}{$world}");}Console::ansiFormat可以给字符串添加更多的样式。关键在于ansiFormat的第二个参数,它是一个数组。除了传递FG_开头的前景色,还可以传递BG_开头的背景色。也就是说,我们不仅可以改变字体的颜色,还可以添加背景。例如下面这行代码$hello=Console::ansiFormat("Hello",[Console::FG_YELLOW,Console::BG_BLUE]);看图说话,那么Console支持多少种前景色和背景色呢?前景色FG_BLACK/FG_RED/FG_GREEN/FG_YELLOW/FG_BLUE/FG_PURPLE/FG_CYAN/FG_GREY背景色BG_BLACK/BG_RED/BG_GREEN/BG_YELLOW/BG_BLUE/BG_PURPLE/BG_CYAN/BG_GREY兄弟,内容可以加粗吗?有必要,你觉得是颜色吗?再来说说其他样式,比如粗体、斜体等,看代码Console::output(Console::ansiFormat("normal",[Console::NORMAL]));Console::output(Console::ansiFormat("粗体",[Console::BOLD]));Console::output(Console::ansiFormat("斜体",[Console::ITALIC]));Console::output(Console::ansiFormat("下划线",[Console::UNDERLINE]));Console::output(Console::ansiFormat("negative",[Console::NEGATIVE]));如果你的英语不达标,你可以看效果图。我想获得用户输入。这是一个程序最基本的功能,当然Console也可以,就像下面这个程序,我们让用户输入名字,然后输出。$name=Console::input("请输入您的姓名:");$formatName=Console::ansiFormat($name,[Console::FG_YELLOW]);Console::output("你的名字是:{$formatName}");使用Console::input,您还可以添加提示以查看结果是否有趣。用户写太危险了,我要他自己选择。你说的有道理,你想让用户选择多项选择题,比如性别等$sex=Console::select("Gender:",[1=>'Male',2=>'Female']);$formatSex=Console::ansiFormat($sex,[Console::FG_YELLOW]);Console::output("你的性别是:{$formatSex}");Console::select施放了一点魔法YESORNO让你选择是或否。这种情况我们在使用命令行安装东西的时候经常会遇到,如何使用yii2的控制台来实现这样的需求呢?只需要一个Console::confirm方法。if(Console::confirm("Areyousure?")){Console::output("userinputyes");}else{Console::output("userinputno");}哇,逻辑判断又来了out,Console帮你实现计算机软件的逻辑。如果你聪明,你一定已经发现了。如果不输入直接回车,说明你在上面的代码中选择了no。yesorno取决于confirm的第二个参数是true还是false。还有更多的x给你吗?说一个,我们上面说了用户输入是不可靠的,所以Console也提供了一种验证方式,看代码Console::prompt("yourname",['required'=>true,'error'=>'Mustbeentered']);prompt很像yii2中ar的rules方法,对每一次输入都进行校验,传过去继续下面的代码。比如上面的代码表示必须填写,否则会抛出错误信息让你继续进入提示方法主要是受限于第二个参数,是一个数组类型的参数,里面的值是必填项trueorfalse是否填写默认默认值pattern正则匹配validator自定义验证函数error错误信息足够强Alright.最后一个很棒。为了让大家眼前一亮,我觉得效果图先要帅。你应该不止一次在linux系统上看到它。它可以很容易地通过控制台实现。控制台::开始进度(0,1000);对于($n=1;$n<=1000;$n++){usleep(1000);控制台::updateProgress($n,1000);}控制台::endProgress();开始进度、更新进度、结束进度。一眼就能看懂的三个功能都能搞定。何时使用它,发挥你强大的想象力。总结多么有趣的Console类,当然还有很多小方法,比如清空命令行,屏幕大小,字符串长度等等,总之你的控制台离不开它。