codeigniter是如何實現鉤子機制的? ,有需要的朋友可以參考下。
記得上一次去到喜啦面試,面試官問我一個問題:codeigniter是如何實現鉤子機制的?
當時答不上來,後來回來之後查了一些資料才明白,所以在這裡記錄一下:
codeigniter的鉤子是這樣實現的:首先在框架的核心檔案system/core/CodeIniter.php檔案的122行,載入Hooks類,接著在該檔案中定義了幾個掛載點,例如pre_system(129行) 、post_controller_constructor(295行)等,並在這些掛載點上面執行hooks類別的_call_hook() 方法。
另附codeigniter的hooks類別的原始碼:
可以看出codeigniter實現鉤子機制的方式不夠優雅,其實完全可以使用觀察者模式來實現鉤子機制,將掛載點當做監聽的事件。
|