Skip to main content

輔助函式是什麼

Laravel 提供了大量的全域 PHP 函式(輔助函式)。它們大多是框架自身內部所使用,但你也可以在應用程式中自由運用。 輔助函式大致分為以下幾類:
  • 陣列 / 物件Arr:: 類別與 data_get() 等函式
  • 數字Number:: 類別
  • 路徑app_path()storage_path() 等取得路徑的函式
  • URLroute()url()asset() 等 URL 產生函式
  • 其他config()collect()auth() 等常用工具
輔助函式無須 use 宣告即可從任何地方呼叫。若要使用 ArrNumber 類別,則需 use Illuminate\Support\Arr; 等 import。

陣列輔助(Arr 類別)

Arr::get() — 以點記法讀取巢狀值

安全地以點記法(foo.bar.baz)從多維陣列讀取巢狀值。鍵不存在時可回傳預設值。
全域函式 data_get() 有同樣的功能,還支援 Arrayable 物件(如 Eloquent 關聯),適用範圍更廣。

Arr::set() — 對巢狀陣列設定值

Arr::has() — 檢查鍵是否存在

Arr::only() / Arr::except() — 篩選或排除鍵

適合從請求資料或設定陣列中只取出必要的鍵,或排除不必要的鍵。

Arr::pluck() — 從巢狀陣列擷取特定鍵

Arr::first() / Arr::last() — 符合條件的第一個 / 最後一個

Arr::flatten() — 將多維陣列扁平化

Arr::wrap() — 確保值為陣列

若值非陣列則包裝為陣列。null 會變成空陣列。適合讓函式參數更彈性。

Arr::sort() — 依值排序

Arr::dot() / Arr::undot() — 點記法轉換 / 復原

Arr::join() — 將陣列結合為字串

data_get() — 存取巢狀資料

Arr::get() 的通用版本。除了陣列,也支援物件、Eloquent 模型、集合。

數字輔助(Number 類別)

Number::format() — 將數字轉為易讀的格式

Number::currency() — 幣別格式

Number::fileSize() — 將檔案大小轉為易讀格式

Number::abbreviate() — 將大數字縮寫

Number::percentage() — 百分比顯示

路徑輔助

取得應用程式的目錄路徑。即使環境或部署目的地不同,也能回傳正確路徑。

URL 輔助

route() — 產生命名路由的 URL

url() — 產生任意路徑的絕對 URL

asset() — 產生靜態資產的 URL

to_route() — 重新導向至命名路由

其他常用輔助函式

config() — 讀寫設定值

collect() — 建立集合

collect() 是進入集合世界的最重要輔助函式。詳細請見集合

auth() — 取得已認證使用者

blank() / filled() — 空值檢查

blank() 會把 null、空字串、只有空白、空集合 / 陣列視為 truefilled() 為其相反。

abort() / abort_if() / abort_unless() — HTTP 例外

dd() / dump() — 除錯

dispatch() — 派發 Job 至佇列

encrypt() / decrypt() — 加解密

env() — 取得環境變數

env() 建議只在 config/ 檔案中呼叫,於其他地方請透過 config() 存取,這是最佳實踐。當設定快取(php artisan config:cache)啟用時,env() 可能不會回傳你預期的值。

與 collect() 的取捨

Arr:: 類別以純 PHP 陣列為操作對象;collect() 則會回傳集合物件。
Eloquent 查詢結果本身就是集合,不需要再 collect()。若只是簡單的陣列操作,用 Arr:: 會更簡潔。

總結

使用 Arr:: 類別的情境
  • 單純的陣列操作(存取巢狀鍵、鍵的篩選等)
  • 不需要集合物件的額外開銷
  • 結果要直接以陣列處理
使用 collect() 的情境
  • 想以方法鏈串接多個操作
  • 對 Eloquent 結果再加工(本身就是集合)
  • 想使用 mapfiltergroupBy 等集合專屬方法
最後修改於 2026年8月2日