鍍金池/ 教程/ PHP/ 開發(fā)
Laravel Cashier
Eloquent ORM
HTTP 響應(yīng)
發(fā)行說明
擴(kuò)展包開發(fā)
HTTP 控制器
事件
擴(kuò)展框架
Contracts
開發(fā)
配置
表單驗(yàn)證
錯(cuò)誤與日志
Hashing
貢獻(xiàn)指南
郵件
Session
遷移與數(shù)據(jù)填充
查詢構(gòu)造器
Redis
升級(jí)向?qū)?/span>
概覽
緩存
服務(wù)提供者
Envoy 任務(wù)執(zhí)行器
隊(duì)列
單元測試
服務(wù)容器
文件系統(tǒng) / 云存儲(chǔ)
認(rèn)證
請(qǐng)求的生命周期
加密
模板
視圖 (View)
Laravel Homestead
Laravel 安裝指南
介紹
Command Bus
分頁
輔助方法
應(yīng)用程序結(jié)構(gòu)
HTTP 路由
HTTP 請(qǐng)求
基本用法
本地化
HTTP 中間件
結(jié)構(gòu)生成器
Facades
Laravel Elixir

開發(fā)

簡介

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

建立自定義命令

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

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

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

php artisan make:console FooCommand

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

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

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

撰寫自定義命令

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

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

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

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

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

array($name, $mode, $description, $defaultValue)

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

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

array($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)來傳入多個(gè)值:

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

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

php artisan foo --option

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

當(dāng)您的自定義命令執(zhí)行時(shí),您需要讓您的應(yīng)用程序可以訪問到這些參數(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!');

詢問式輸入

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

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

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

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

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

提示用戶進(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 命令

一旦你的自定義命令撰寫完成后,你需要將它注冊(cè)于 Artisan 它才能被使用。這通常位于 app/Console/Kernel.php 這個(gè)文件中。在此文件的 commands 屬性,你會(huì)找到一份命令的清單。若要注冊(cè)你的自定義命令,很簡單的你只要將它加入清單中。當(dāng) Artisan 啟動(dòng)時(shí),被列于此屬性中的所有命令都將被 service container 解析,并且被注冊(cè)于 Artisan 。

上一篇:Laravel Elixir下一篇:配置