輔助函式是什麼
Laravel 提供了大量的全域 PHP 函式(輔助函式)。它們大多是框架自身內部所使用,但你也可以在應用程式中自由運用。 輔助函式大致分為以下幾類:- 陣列 / 物件:
Arr::類別與data_get()等函式 - 數字:
Number::類別 - 路徑:
app_path()、storage_path()等取得路徑的函式 - URL:
route()、url()、asset()等 URL 產生函式 - 其他:
config()、collect()、auth()等常用工具
輔助函式無須
use 宣告即可從任何地方呼叫。若要使用 Arr 或 Number 類別,則需 use Illuminate\Support\Arr; 等 import。陣列輔助(Arr 類別)
Arr::get() — 以點記法讀取巢狀值
安全地以點記法(foo.bar.baz)從多維陣列讀取巢狀值。鍵不存在時可回傳預設值。
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() — 建立集合
auth() — 取得已認證使用者
blank() / filled() — 空值檢查
blank() 會把 null、空字串、只有空白、空集合 / 陣列視為 true。filled() 為其相反。
abort() / abort_if() / abort_unless() — HTTP 例外
dd() / dump() — 除錯
dispatch() — 派發 Job 至佇列
encrypt() / decrypt() — 加解密
env() — 取得環境變數
與 collect() 的取捨
Arr:: 類別以純 PHP 陣列為操作對象;collect() 則會回傳集合物件。
Eloquent 查詢結果本身就是集合,不需要再
collect()。若只是簡單的陣列操作,用 Arr:: 會更簡潔。總結
常用輔助函式一覽
常用輔助函式一覽
Arr 類別 vs collect()
Arr 類別 vs collect()
使用
Arr:: 類別的情境:- 單純的陣列操作(存取巢狀鍵、鍵的篩選等)
- 不需要集合物件的額外開銷
- 結果要直接以陣列處理
collect() 的情境:- 想以方法鏈串接多個操作
- 對 Eloquent 結果再加工(本身就是集合)
- 想使用
map、filter、groupBy等集合專屬方法