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

開發(fā)

簡介

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

建立自定義命令

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

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

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

php artisan make:console FooCommand

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

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

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

撰寫自定義命令

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

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

參數(shù)與選項

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

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

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

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

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

array($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)用命令時可以多次使用此選項來傳入多個值:

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

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

php artisan foo --option

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

當您的自定義命令執(zhí)行時,您需要讓您的應用程序可以訪問到這些參數(shù)和選項的值,要做到這一點,您可以使用 argumentoption 方法:

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

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

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

$arguments = $this->argument();

取得自定義命令被輸入的選項

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

取得自定義命令被輸入的所有選項

$options = $this->option();

產(chǎn)生輸出

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

顯示一般消息到終端屏幕

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

顯示錯誤消息到終端屏幕

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

詢問式輸入

您也可以使用 askconfirm 方法來提示用戶進行輸入:

提示用戶進行輸入

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

提示用戶進行加密輸入

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

提示用戶進行確認

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

您也可以指定一個默認值給 confirm 方法,可以是 truefalse

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

調(diào)用其它命令

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

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

注冊自定義命令

注冊一個 Artisan 命令

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

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