Artisan 開(kāi)發(fā)

2018-12-17 11:00 更新

簡(jiǎn)介

除了 Artisan 本身提供的命令之外,您也可以為您的應(yīng)用程序建立屬于你自己的命令。你可以將自定義命令存放在 app/Console/commands 目錄底下;然而,您也可以任意選擇存放位置,只要您的命令能夠被 composer.json 自動(dòng)加載。

           

建立自定義命令

自動(dòng)創(chuàng)建類(lèi)(Class)

要?jiǎng)?chuàng)建一個(gè)新的自定義命令,您可以使用 make:console 這個(gè) Artisan 命令,這將會(huì)自動(dòng)產(chǎn)生一個(gè) Command stub 協(xié)助您開(kāi)始創(chuàng)建您的自定義命令:

自動(dòng)創(chuàng)建一個(gè)新的命令類(lèi)

php artisan make:console FooCommand

           

上面的命令將會(huì)協(xié)助你自動(dòng)創(chuàng)建一個(gè)類(lèi),并保存為文件 app/Console/Commands/FooCommand.php

在創(chuàng)建自定義命令時(shí),加上 --command 這個(gè)選項(xiàng),將可以指定之后在終端機(jī)使用此自定義命令時(shí),所要輸入的自定義命令名稱(chēng):

php artisan make:console AssignUsers --command=users:assign

           

撰寫(xiě)自定義命令

一旦你的自定義命令被創(chuàng)建后,你需要填寫(xiě)自定義命令的 名稱(chēng)(name)描述(description),您所填寫(xiě)的內(nèi)容將會(huì)被顯示在 Artisan 的 list 畫(huà)面中。

當(dāng)您的自定義命令被執(zhí)行時(shí),將會(huì)調(diào)用 fire 方法,您可以在此為自定義命令加入任何的邏輯判斷。

參數(shù)與選項(xiàng)

你可以通過(guò) getArgumentsgetOptions 為自定義命令自行定義任何需要的參數(shù)與選項(xiàng)。這兩個(gè)方法都會(huì)返回一組命令數(shù)組,并由選項(xiàng)數(shù)組的清單所組成。

當(dāng)定義 arguments 時(shí),該數(shù)組值的定義分別如下:

[$name, $mode, $description, $defaultValue]

           

參數(shù) mode 可以是下列其中一項(xiàng): InputArgument::REQUIREDInputArgument::OPTIONAL

當(dāng)定義 options 時(shí),該數(shù)組值的定義分別如下:

[$name, $shortcut, $mode, $description, $defaultValue]

           

對(duì)選項(xiàng)而言,參數(shù) mode 可以是下列其中一項(xiàng):InputOption::VALUE_REQUIRED, InputOption::VALUE_OPTIONAL, InputOption::VALUE_IS_ARRAY, InputOption::VALUE_NONE。

模式為 VALUE_IS_ARRAY 表示調(diào)用命令時(shí)可以多次使用此選項(xiàng)來(lái)傳入多個(gè)值:

InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY

           

Would then allow for this command:

php artisan foo --option=bar --option=baz

           

模式為 VALUE_NONE 則表示將此選項(xiàng)純粹作為一種有或無(wú)的「開(kāi)關(guān)」使用:

php artisan foo --option

           

取得輸入值(參數(shù)與選項(xiàng))

當(dāng)您的自定義命令執(zhí)行時(shí),您需要讓您的應(yīng)用程序可以訪(fǎng)問(wèn)到這些參數(shù)和選項(xiàng)的值,要做到這一點(diǎn),您可以使用 argumentoption 方法:

取得自定義命令被輸入的參數(shù)

$value = $this->argument('name');

           

取得自定義命令被輸入的所有參數(shù)

$arguments = $this->argument();

           

取得自定義命令被輸入的選項(xiàng)

$value = $this->option('name');

           

取得自定義命令被輸入的所有選項(xiàng)

$options = $this->option();

           

產(chǎn)生輸出

想要顯示信息到終端屏幕上,您可以使用 info、comment、questionerror 方法。每一種方法將會(huì)依據(jù)它所代表的目的,分別對(duì)應(yīng)一種適當(dāng)?shù)?ANSI 顏色。

顯示一般消息到終端屏幕

$this->info('Display this on the screen');

           

顯示錯(cuò)誤消息到終端屏幕

$this->error('Something went wrong!');

           

詢(xún)問(wèn)式輸入

您也可以使用 askconfirm 方法來(lái)提示用戶(hù)進(jìn)行輸入:

提示用戶(hù)進(jìn)行輸入

$name = $this->ask('What is your name?');

           

提示用戶(hù)進(jìn)行加密輸入

$password = $this->secret('What is the password?');

           

提示用戶(hù)進(jìn)行確認(rèn)

if ($this->confirm('Do you wish to continue? [yes|no]')){
    //}

           

您也可以指定一個(gè)默認(rèn)值給 confirm 方法,可以是 truefalse

$this->confirm($question, true);

           

調(diào)用其它命令

有時(shí)候您可能希望在您的命令內(nèi)部調(diào)用其它命令,此時(shí)您可以使用 call 方法:

$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);

           

           

注冊(cè)自定義命令

注冊(cè)一個(gè) Artisan 命令

一旦你的自定義命令撰寫(xiě)完成后,你需要將它注冊(cè)于 Artisan 它才能被使用。這通常位于 app/Console/Kernel.php 這個(gè)文件中。在此文件的 commands 屬性,你會(huì)找到一份命令的清單。若要注冊(cè)你的自定義命令,很簡(jiǎn)單的你只要將它加入清單中。

protected $commands = [
    'App\Console\Commands\FooCommand'];

           

當(dāng) Artisan 啟動(dòng)時(shí),被列于此屬性中的所有命令都將被 服務(wù)容器 解析,并且被注冊(cè)于 Artisan 。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)