執行工作:Routing/Route.php

要讀懂此篇source code,需要先瞭解Laravel提供了哪些豐富的routing方法:
Routing
一個route的主要元素有三:
method:這個route處理哪些HTTP Verb?(譬如GET, POST, PUT … etc,可複選)
uri:這個route處理哪種URI的pattern?(負責的網址長怎樣)
action:這個route會做什麼動作

$uri, $methods, $action便為前文提到的三元素。
其中$action陣列紀錄一系列執行此次route會做的動作。
包括:prefix, before, uses, after, domain, as, controller
分別的意義為:
prefix:用以實作Route Prefixing功能,參考:Admin Routes (or Prefix Routes) in Laravel 4
before:執行主要動作前先執行的filter。
uses:此route會做的主要動作
as:幫這個route命名。之後用URL::route產生網址比較方便。
after:執行主要動作後會執行的filter。
domain:這個route處理哪種domain(子網域)。
???

Laravel很多細節都拆分的很清楚、拆出一大堆獨立類別,這個地方怎麼那麼混亂、全部塞在一個陣列?
before、uses、after是三個執行動作,放一起也就算了,prefix、domain、as 、controller也放在這是?這幾個放在’action’裏面合理嗎?獨立為成員變數比較合理吧。

建構式會將三元素給紀錄起來。
建構式可以接受$action為closure或陣列,若是closure的話,會在parseAction內被整理成陣列。
如果有設定要處理GET,卻沒有設定要處理HEAD的話…那當然是搞錯了,因為HEAD是GET的兄弟、幫忙加上去吧。參見:What Is a HTTP HEAD Request Good for? Some Uses
最後檢查是否有設定prefix,有的話就用prefix函式去修改$uri成員變數。

將設定好的參數取出,丟給$action陣列中索引為’uses’的動作去執行主要動作。

在陣列中找到第一個可以呼叫的元素。
array_first是Laravel定義的輔助函數,用來找到第一個通過測試的元素:
The array_first method returns the first element of an array passing a given truth test.
用內建函數is_callable測試能否呼叫。

by 阿川先生

有技術問題想要找人討論嗎?

歡迎前往我開發的 Devs.tw 程式設計討論區

一起來討論技術問題、分享技術筆記、文章吧!

前往逛逛:https://devs.tw