日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

yii2 / Console - yii2开发控制台应用时的还我漂漂拳

發(fā)布時(shí)間:2025/3/8 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii2 / Console - yii2开发控制台应用时的还我漂漂拳 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

之所以放到此專欄主要是該文章對(duì)我們學(xué)習(xí)yii2-queue有很大幫助。

我們經(jīng)常使用yii2開發(fā)命令行應(yīng)用,也會(huì)遇到比如讓用戶在命令行輸入信息、選擇等操作,今天為大家介紹的這個(gè)yii2的Console類輕松的幫你搞定這件事情,有了它,你的命令行應(yīng)用將更加高逼格。

為了學(xué)習(xí)更簡(jiǎn)單,我們用問答的形式開始。

Console在哪里?

Console是yii2的一個(gè)幫助類,所在文件夾為 /vendor/yiisoft/yii2/helpers,里面有 BaseConsoleConsole ,Console類繼承于BaseConsole,BaseConsole不允許被調(diào)用,因此我們都是使用Console類。

在代碼里要使用套路

use yii\helpers\Console; ... Console::xxxx()

Hello World

當(dāng)我們開發(fā)yii2的控制臺(tái)應(yīng)用的時(shí)候,可以echo一個(gè)字符串,這樣命令行會(huì)顯示,那么用Console如何實(shí)現(xiàn)那?看代碼

public function actionIndex() {Console::output(“Hello World”); }

對(duì),用Console::output,你可能會(huì)說(shuō),“這還沒有echo簡(jiǎn)單那?”,那么我們接著看。

五彩繽紛的Hello World

我現(xiàn)在想讓Hello是黃色的,World是綠色的,怎么玩?

public function actionIndex() {$hello = Console::ansiFormat("Hello",[Console::FG_YELLOW]);$world = Console::ansiFormat("World",[Console::FG_GREEN]);Console::output("{$hello} {$world}"); }

Console::ansiFormat可以為字符串增加更多樣式。

關(guān)鍵在于ansiFormat的第二個(gè)參數(shù),這是一個(gè)數(shù)組,除了能傳遞FG_開頭的前景色,還能傳遞BG_開頭的背景色,也就是說(shuō)我們不但能改變字體的顏色,還能加背景,比如接下來(lái)的這行代碼

$hello = Console::ansiFormat("Hello",[Console::FG_YELLOW,Console::BG_BLUE]);

看圖說(shuō)話

那么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

哥,內(nèi)容能加粗么?

必須的了,你以為就是顏色么?下面把其他樣式再說(shuō)下,比如加粗、斜體等等,看代碼

Console::output(Console::ansiFormat("normal",[Console::NORMAL])); Console::output(Console::ansiFormat("bold",[Console::BOLD])); Console::output(Console::ansiFormat("italic",[Console::ITALIC])); Console::output(Console::ansiFormat("underline",[Console::UNDERLINE])); Console::output(Console::ansiFormat("negative",[Console::NEGATIVE]));

如果你的英文不達(dá)標(biāo)可以看效果圖

我想得到用戶輸入的

沒錯(cuò),這是一個(gè)程序最基本的功能,Console當(dāng)然也可以,就像下面的程序,我們讓用戶輸入名字,然后再輸出。

$name = Console::input("請(qǐng)輸入你的名字:");$formatName = Console::ansiFormat($name,[Console::FG_YELLOW]); Console::output("你的名字是:{$formatName}");

Console::input,還能添加提示語(yǔ),看看結(jié)果是不是很有趣。

用戶寫太危險(xiǎn),我要他選擇。

你說(shuō)的有道理,你是要用戶進(jìn)行單選題是吧,比如性別等。

$sex = Console::select("性別:",[1=>'男',2=>'女']);$formatSex = Console::ansiFormat($sex,[Console::FG_YELLOW]); Console::output("你的性別是:{$formatSex}");

Console::select 施展著小魔法

YES OR NO

讓你選擇yes還是no,這種情況在我們使用命令行安裝東西的時(shí)候經(jīng)常遇到,用yii2的Console如何實(shí)現(xiàn)這樣的需求那?只需要一個(gè) Console::confirm 方法。

if (Console::confirm("Are you sure?")) {Console::output("user input yes"); }else{Console::output("user input no"); }

哇哦,邏輯判斷又出來(lái)了,Console幫你實(shí)現(xiàn)著計(jì)算機(jī)軟件的邏輯。

聰明的你一定發(fā)現(xiàn)了吧,如果你不輸入直接回車則在上面的代碼中表示你選擇了no,具體是yes還是no取決于confirm的第二個(gè)參數(shù)是true還是false。

還有更你x的么?

那就說(shuō)一個(gè),上面我們說(shuō)了用戶輸入是不靠譜的,因此Console也提供了一個(gè)驗(yàn)證方法,看代碼

Console::prompt("你的名字",['required'=>true,'error'=>'必須輸入']);

prompt很像yii2中ar的rules方法,對(duì)每個(gè)輸入進(jìn)行驗(yàn)證,通過才能繼續(xù)下面的代碼,比如上面的代碼是說(shuō)必須填寫,否則拋出錯(cuò)誤信息并讓你繼續(xù)輸入

關(guān)于prompt方法主要是第二個(gè)參數(shù)進(jìn)行限制,這是一個(gè)數(shù)組類型的參數(shù),里面的值為

  • required 真假,是否必須填寫
  • default 默認(rèn)值
  • pattern 正則匹配
  • validator 自定義驗(yàn)證函數(shù)
  • error 錯(cuò)誤信息

夠強(qiáng)大的了吧。

最后一個(gè)巨牛逼的

為了亮瞎你的眼,我覺得先上效果圖

帥氣吧,你在linux系統(tǒng)上應(yīng)該不止一次看到它吧,用Console也可以輕松實(shí)現(xiàn)

Console::startProgress(0, 1000); for ($n = 1; $n <= 1000; $n++) {usleep(1000);Console::updateProgress($n, 1000);} Console::endProgress();

startProgress、updateProgress、endProgress。

三個(gè)你一眼可以看懂的函數(shù)就可以搞定,具體什么時(shí)候使用,發(fā)揮你強(qiáng)大的想象力吧。

小結(jié)

多么有趣的Console類,當(dāng)然其實(shí)還有很多小方法,比如清空命令行,屏幕尺寸、字符串長(zhǎng)度等等,總之你的控制臺(tái)離不開它。

原文鏈接 http://nai8.me/article/index....

總結(jié)

以上是生活随笔為你收集整理的yii2 / Console - yii2开发控制台应用时的还我漂漂拳的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。