W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
除了 Artisan 本身提供的命令之外,您也可以為您的應(yīng)用程序建立屬于你自己的命令。你可以將自定義命令存放在 app/Console/commands
目錄底下;然而,您也可以任意選擇存放位置,只要您的命令能夠被 composer.json
自動(dòng)加載。
要?jiǎng)?chuàng)建一個(gè)新的自定義命令,您可以使用 make:console
這個(gè) Artisan 命令,這將會(huì)自動(dòng)產(chǎn)生一個(gè) Command stub 協(xié)助您開(kāi)始創(chuàng)建您的自定義命令:
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
一旦你的自定義命令被創(chuàng)建后,你需要填寫(xiě)自定義命令的 名稱(chēng)(name)
與 描述(description)
,您所填寫(xiě)的內(nèi)容將會(huì)被顯示在 Artisan 的 list
畫(huà)面中。
當(dāng)您的自定義命令被執(zhí)行時(shí),將會(huì)調(diào)用 fire
方法,您可以在此為自定義命令加入任何的邏輯判斷。
你可以通過(guò) getArguments
與 getOptions
為自定義命令自行定義任何需要的參數(shù)與選項(xiàng)。這兩個(gè)方法都會(huì)返回一組命令數(shù)組,并由選項(xiàng)數(shù)組的清單所組成。
當(dāng)定義 arguments
時(shí),該數(shù)組值的定義分別如下:
[$name, $mode, $description, $defaultValue]
參數(shù) mode
可以是下列其中一項(xiàng): InputArgument::REQUIRED
或 InputArgument::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
當(dāng)您的自定義命令執(zhí)行時(shí),您需要讓您的應(yīng)用程序可以訪(fǎng)問(wèn)到這些參數(shù)和選項(xiàng)的值,要做到這一點(diǎn),您可以使用 argument
和 option
方法:
$value = $this->argument('name');
$arguments = $this->argument();
$value = $this->option('name');
$options = $this->option();
想要顯示信息到終端屏幕上,您可以使用 info
、comment
、question
和 error
方法。每一種方法將會(huì)依據(jù)它所代表的目的,分別對(duì)應(yīng)一種適當(dāng)?shù)?ANSI 顏色。
$this->info('Display this on the screen');
$this->error('Something went wrong!');
您也可以使用 ask
和 confirm
方法來(lái)提示用戶(hù)進(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]')){ //}
您也可以指定一個(gè)默認(rèn)值給 confirm
方法,可以是 true
或 false
:
$this->confirm($question, true);
有時(shí)候您可能希望在您的命令內(nèi)部調(diào)用其它命令,此時(shí)您可以使用 call
方法:
$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);
一旦你的自定義命令撰寫(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 。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: