3分鐘短文:Laravel命令行的參數和可選項,分不清?怎麼可能!

2021-01-10 程式設計師小助手

引言

上一期我們介紹了laravel命令行的創建,以及使用方法。使用了一個沒有數據輸入和輸出的測試用例。 本期我們來介紹帶有命令行參數輸入,和命令行輸出信息的代碼用法。

代碼時間

聲明命令行位置參數,在類文件內$signature變量內書寫:

protected $signature = 'password:reset {userId} {--sendEmail}';

其中 userId是必填參數,需要填入一個數據;而 sendEmail 則是一個開關, 如果在命令行中帶有 --sendEmail 則返回true,否則返回默認值。

對於常用的位置參數,如果想要對 userId設置為可選,這樣寫:

password:reset {userId?}

如果要給其設置一個默認值,這樣來寫:

password:reset {userId=1}

對於可選項(比如 --password) 需要用戶手動輸入一個值,這樣寫:

password:reset {userId} {--password=}

加一個等號即可。如果可選項有默認值,等號傳遞上即可:

password:reset {userId} {--queue=default}

如果要使用一個命令行參數,接收一系列值,也就是一個數組,這樣來聲明:

password:reset {userIds*}

用的使用需要使用空格將各個參數排開:

php artisan password:reset 1 2 3

如果是可選項參數,則聲明如下:

password:reset {--ids=*}

使用起來的時候,比較人性化,我們推薦這種用法,也是linux作業系統下的慣例:

php artisan password:reset --ids=1 --ids=2 --ids=3

這樣要直觀的多。

演示示例

假設命令行文件內聲明的參數類型如下:

password:reset {userId}

那麼在程序內要獲取命令行的該參數,需要$this->argument()方法,返回的是一個數組:

["command": "password:reset", "userId': "5",]

獲取單個參數的值:

$userId = $this->argument('userId');

對於可選項的值,文件內聲明如下:

password:reset {--userId=}

首選我們列印多有的可選項$this->option()數據:

["userId" => "5" "help" => false "quiet" => false "verbose" => false "version" => false "ansi" => false "no-ansi" => false "no-interaction" => false "env" => null]

如果是獲取單個可選項參數,在方法內指定即可:

$userId = $this->option('userId');

寫在最後

本文使用對比的方式,為大家演示了命令行的argument和option的區別, 在用法上我們更推薦使用 option獲取用戶輸入,這樣更符合linux的設計哲學和慣例。

Happy coding :-)

我是@程式設計師小助手,持續分享編程知識,歡迎關注。

相關焦點

  • laravel 基礎面試題-偏交談-2020-12-25-laravel-命令行工具artisan與tinker
    laravel 基礎面試題 - 偏交談 - 2020-12-25-laravel - 命令行工具 artisan 與 tinker首先了解一下,
  • 3分鐘短文:任命管理員,給Laravel普通用戶提權
    我們在users表內追加一個欄位 is_admin 用於標記用戶的管理員身份,使用命令創建遷移文件: 首先填充 up 方法用於遷移執行的邏輯: 如果遷移失敗,進行回滾使用的 down 方法: 完成編輯後保存,並執行遷移指令:
  • 3分鐘短文:Laravel ORM 模型用法綱要
    引言 前兩期為了說明laravel框架提供的資料庫操作能力,直接使用DB門面操作, 而沒有引入更為強大的eloquent orm功能。從本期開始,我們就分次把 eloquent的一些簡要知識點,為大家提煉演示一下。主要以代碼為主,配以簡要說明。
  • 3分鐘短文:說說Laravel通用緩存Cache的使用技巧
    還有很多內置可選項:file 文件存儲apc php內置緩存array 內存變量database 資料庫memcached / redis也就是說,助手函數cache()除了接收字符串和數組,其他一概不處理。接下來,如果傳入的是數組,程序的處理方法:return app('cache')->put(key($arguments[0]), reset($arguments[0]), $arguments[1] ??
  • 3分鐘短文|Laravel SQL篩選兩個日期之間的記錄,怎麼寫?
    引言今天說一個細分的需求,在模型中,或者使用laravel提供的 Eloquent ORM 功能,構造查詢語句時,返回位於兩個指定的日期之間的條目。應該怎麼寫?本文通過幾個例子,為大家梳理一下。如何實現在 from 和 to 之間的日期呢,類似下面這樣:SELECT * FROM table_name WHERE reservation_from BETWEEN '$from' AND '$to在laravel中你可以使用 whereBetween 這個查詢子句。
  • 3分鐘短文:Laravel路由註冊,你必須掌握的「動詞」!
    引言 無論是web頁面還是API接口,我們都繞不開的是路由地址,網絡資源定位也只能依賴於路由地址,它是銜接網絡請求與應用程式的橋梁。
  • Python 命令行參數解析庫argparse
    使用步驟:1)import argparse    首先導入模塊2)parser = argparse.ArgumentParser()    創建一個解析對象3)parser.add_argument()    向該對象中添加你要關注的命令行參數和選項4)parser.parse_args()    進行解析對於第
  • 3分鐘短文:太爽了,用Laravel寫API接口!
    這在之前的章節是很常見的操作,我們不做贅述了。那麼這個路由文件,是什麼時候加載上去的呢?那麼我們怎麼拿到用戶授權呢?默認的驅動 token 定義在框架文件 laravel/framework/src/Illuminate/Auth/TokenGuard.php內。
  • cUrl命令行工具下載使用心得及常用參數解釋
    主要的區別在於wget默認是保存到文件,而curl將輸出定向到命令行上。這使得curl能非常方便的查看站點的內容。如何下載Curl命令行工具?1. 進入下載頁,選擇需要的版本(適合自身作業系統): https://curl.haxx.se/download.html2. 根據自己的作業系統位數和是否需要SSL下載相應的版本。
  • 5. qemu命令行參數
    KVM 實際調用的是qemu-system-x86_64命令參數如下root@:/etc/libvirt/qemu# kvm -helpQEMU emulator version 2.3.0 (Debian 1:2.3+dfsg-
  • Win10 學院:Setup.exe 命令行參數詳解
    Win10之家訊:Setup.exe作為Win10預覽版安裝文件的一部分,其實不只有通過雙擊才能運行。通過在其後面添加各種各樣的命令行參數,我們可以在某種程度上自定義Windows10的安裝行為。下面,Win10之家也為大家帶來了部分命令行參數詳解。
  • Laravel 自定義 SQL 查詢參數綁定
    那麼如果寫到程序裡,應該如何把綁定參數按順序傳入呢。 既然是自定義的欄位名,我們可以使用 DB::raw 方式傳入。最重要就是 setBindings 方法了,傳送的是前面自定義SQL語句的位置參數。只需一一對應上就可以了。 如果大家經常使用laravel的調試功能的話,應該會注意到,這種問號的寫法是laravel本身封裝SQL語句用的。
  • C語言|命令行參數
    執行程序時,可以從命令行傳值給 C 程序。這些值被稱為命令行參數,它們對程序很重要,特別是當您想從外部控制程序,而不是在代碼內對這些值進行硬編碼時,就顯得尤為重要了。
  • 安裝laravel,最靠譜的方法,利用composer安裝
    laravel框架是一款應用於web的php框架,這個框架因其非常優雅,簡潔方便使用而備受眾多開發者所使用,那麼今天我們就來介紹一下laravel這框框架在windows平臺怎樣進行安裝。安裝好之後,我們進入命令行來測試一下是否成功,在命令行中輸入:composer這個命令,看是否又返回關於composer的相關信息,如果有則表示安裝成功了。
  • 在Python中創建命令行界面的優秀方式
    我們先給大家介紹什麼是命令行界面(CLI): 命令行界面或命令語言解釋器,也稱為命令行用戶界面、控制臺用戶界面和字符用戶界面,是一種與電腦程式交互的方式,用戶以連續的文本行形式向程序發出命令。
  • 【python】命令行參數argparse用法詳解
    第一個例子中,-v沒有指定任何參數也可,其實存的是True和False,如果出現,則其值為True,否則為False默認的參數類型為str,如果要進行數學計算,需要對參數進行解析後進行類型轉換,如果不能轉換則需要報錯,這樣比較麻煩
  • C語言命令行參數如何解析?你經常用的終端怎麼運行的你說不清楚!
    這個專題當時寫了11個小節,然後在不斷細化後,越來越多,形成了體系,於是準備慢慢來說,把這個計算機的建立過程拆解,擺在大家面前,再也不是龐然大物,而是有跡可循。今天我們說下,命令行參數,我們在寫工具的時候,基本上都是帶著參數的。
  • Python 命令行之旅:深入 argparse(二)
    劇照 | 《仙劍奇俠傳》前言在上一篇「深入 argparse (一)」的文章中,我們深入了解了 argparse 的包括參數動作和參數類別在內的基本功能,具備了編寫一個簡單命令行程序的能力。本文將繼續深入了解 argparse 的進階玩法,一窺探其全貌,助力我們擁有實現複雜命令行程序的能力。
  • 3分鐘短文|Laravel如何改造複雜的多表聯合查詢,這很高效!
    引言今天我們來說一下laravel框架裡最常用的資料庫模型操作,特別是功能複雜的應用程式, 往往會拆分出許多的業務表,關聯表,在時間和空間上進行權衡。那麼今天的問題是,如何關聯3張表進行操作?學習時間假設現在有3張表,分別是 articles 文章表,category 分類表,還要一個是 users 用戶表。 關聯度最深的還數 articles,因為它要存儲該文章的分類,還有發布者。
  • 3分鐘短文:Laravel模型一對一一對多關係真的亂嗎?
    引言laravel模型不但提供了可供資料庫操作的增刪改查,還附加了很多功能,最關鍵的要數模型的關聯關係。 本文說一說簡單的一對一,和一對多關係。用代碼說話,讓大家更直觀地理解。沒錯,laravel也的確是這樣做的。