分析 Log
Laravel 的 Log 套件在 5.5 版之前,是使用 Writer 包裝 Monolog,成為一個 proxy pattern,被代理的類別則是寫死 Monolog。在 5.6 版開始,設計改採用 Logger 包裝 PSR-3 的 LoggerInterface,一樣是 proxy pattern,但被代理的類別只要是符合 PSR-3 的介面,就能使用。
Laravel 的 Log 套件在 5.5 版之前,是使用 Writer 包裝 Monolog,成為一個 proxy pattern,被代理的類別則是寫死 Monolog。在 5.6 版開始,設計改採用 Logger 包裝 PSR-3 的 LoggerInterface,一樣是 proxy pattern,但被代理的類別只要是符合 PSR-3 的介面,就能使用。
到就目前所知,Middleware 是由 Pipeline 實作的,而程式裡出現 Pipeline 有兩次。一次是 Global middleware,也就是 Http Kernel 所寫的這段程式碼:
原本預定要看 middleware,但因為發生忘了帶充電器的蠢事,沒辦法用自己習慣的筆電,所以換講比較簡單的 Marcoable。
繼續昨天的 runRoute()。
回過頭來,我們來看 Http Kernel 的這段程式碼。
Route 帶有單一個路由的資訊。從它在 Router 如何被初始化的程式碼,可以知道它有哪些基本的資訊。
今天要接著來看,是如何設定各式各樣的 route 了。先來看 get() 與 post() 的原始碼:
昨天在最後面,可以知道一件很重要的資訊:Router 裡面所指的 action 原形,其實是 array。
一樣,先從類別圖開始。這次因為相關的類別太多,所以會先以 Router 設定 Controller 以及 Request 如何對應到正確的 Controller 為主,而不會把所有類別都硬塞到這次的圖裡。
今天總算來到了重頭戲--Routing,也就是負責決定什麼樣的網址要傳到指定的 controller。