W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
除了 Artisan 本身提供的命令之外,您也可以為您的應(yīng)用程序建立屬于你自己的命令。你可以將自定義命令存放在 app/Console/commands
目錄底下;然而,您也可以任意選擇存放位置,只要您的命令能夠被 composer.json
自動加載。
要創(chuàng)建一個新的自定義命令,您可以使用 make:console
這個 Artisan 命令,這將會自動產(chǎn)生一個 Command stub 協(xié)助您開始創(chuàng)建您的自定義命令:
php artisan make:console FooCommand
上面的命令將會協(xié)助你自動創(chuàng)建一個類,并保存為文件 app/Console/Commands/FooCommand.php
。
在創(chuàng)建自定義命令時,加上 --command
這個選項,將可以指定之后在終端機(jī)使用此自定義命令時,所要輸入的自定義命令名稱:
php artisan make:console AssignUsers --command=users:assign
一旦你的自定義命令被創(chuàng)建后,你需要填寫自定義命令的 名稱(name)
與 描述(description)
,您所填寫的內(nèi)容將會被顯示在 Artisan 的 list
畫面中。
當(dāng)您的自定義命令被執(zhí)行時,將會調(diào)用 fire
方法,您可以在此為自定義命令加入任何的邏輯判斷。
你可以通過 getArguments
與 getOptions
為自定義命令自行定義任何需要的參數(shù)與選項。這兩個方法都會返回一組命令數(shù)組,并由選項數(shù)組的清單所組成。
當(dāng)定義 arguments
時,該數(shù)組值的定義分別如下:
[$name, $mode, $description, $defaultValue]
參數(shù) mode
可以是下列其中一項: InputArgument::REQUIRED
或 InputArgument::OPTIONAL
。
當(dāng)定義 options
時,該數(shù)組值的定義分別如下:
[$name, $shortcut, $mode, $description, $defaultValue]
對選項而言,參數(shù) mode
可以是下列其中一項:InputOption::VALUE_REQUIRED
, InputOption::VALUE_OPTIONAL
, InputOption::VALUE_IS_ARRAY
, InputOption::VALUE_NONE
。
模式為 VALUE_IS_ARRAY
表示調(diào)用命令時可以多次使用此選項來傳入多個值:
InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY
Would then allow for this command:
php artisan foo --option=bar --option=baz
模式為 VALUE_NONE
則表示將此選項純粹作為一種有或無的「開關(guān)」使用:
php artisan foo --option
當(dāng)您的自定義命令執(zhí)行時,您需要讓您的應(yīng)用程序可以訪問到這些參數(shù)和選項的值,要做到這一點(diǎn),您可以使用 argument
和 option
方法:
$value = $this->argument('name');
$arguments = $this->argument();
$value = $this->option('name');
$options = $this->option();
想要顯示信息到終端屏幕上,您可以使用 info
、comment
、question
和 error
方法。每一種方法將會依據(jù)它所代表的目的,分別對應(yīng)一種適當(dāng)?shù)?ANSI 顏色。
$this->info('Display this on the screen');
$this->error('Something went wrong!');
您也可以使用 ask
和 confirm
方法來提示用戶進(jìn)行輸入:
$name = $this->ask('What is your name?');
$password = $this->secret('What is the password?');
if ($this->confirm('Do you wish to continue? [yes|no]')){ //}
您也可以指定一個默認(rèn)值給 confirm
方法,可以是 true
或 false
:
$this->confirm($question, true);
有時候您可能希望在您的命令內(nèi)部調(diào)用其它命令,此時您可以使用 call
方法:
$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);
一旦你的自定義命令撰寫完成后,你需要將它注冊于 Artisan 它才能被使用。這通常位于 app/Console/Kernel.php
這個文件中。在此文件的 commands
屬性,你會找到一份命令的清單。若要注冊你的自定義命令,很簡單的你只要將它加入清單中。
protected $commands = [ 'App\Console\Commands\FooCommand'];
當(dāng) Artisan 啟動時,被列于此屬性中的所有命令都將被 服務(wù)容器 解析,并且被注冊于 Artisan 。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: