當前位置:
首頁 > 知識 > 模仿KOA,用php來寫一個極簡的開發框架

模仿KOA,用php來寫一個極簡的開發框架

nodejs的koa可以說是非常受歡迎的,特別是其「洋蔥模型」應該用過的人印象都比較深,下面就嘗試用php來實現一個。

註:本文是PHPec框架的最原始思路版本。PHPec是在此基礎上完善編寫出來的一個極簡的輕量級開發框架,除了提供中間件調用模式外,同時提供了常見的自動路由功能,目前 已在github上發布了最初版本。歡迎感興趣的去了解和提出建議,也歡迎star. 地址: https://github.com/tim1020/PHPec

期望用法 先來看看我要怎麼用「這個框架」?

基本上跟koa類似,先new一個app對象,使用use方法添加中間件,支持閉包或外部文件。

$ctx支持注入所需的各種參數,方便各中間件共用。

完整代碼

沒錯,這就是全部的代碼。

代碼講解 use方法 use可以加入閉包或外部文件,且php5不支持use作為方法名,這裡用 來實現重載,當調用use時由 來調用私有的 方法。

對傳進來的參數作判斷,如果是字元串,表示外部載入,則去判斷文件和處理函數是否存在和有效,然後將處理函數加到中間件隊列。

這裡面如果use()傳遞空參數,表示忽略後面的中間件。

run方法 添加完中間件後,執行 方法運行,來看看是怎麼執行的:

調用私有的_gen來生成一個生成器,該生成器可以迭代返回隊列中的中間件處理函數。 調用next方法執行下一個中間件(這裡即第一個入口)

2.1 調用生成器的current方法獲得當前的處理函數

2.2 執行該函數(傳遞$this作為參數,即$ctx),並調用生成器的next方法後移到下一個處理函數

直到生成器沒有返回時結束。 中間件中需調用 將控制權交到下一個中間件,從而迭代完所有的中間件。

和 方法 提供了 t和 方法,是方便在中間件中使用$ctx直接設置和訪問未經定義的值。如:

That is all

更多分享,敬請關注

本文來源網路,侵立刪!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

Tplay—基於 ThinkPHP 的後台管理框架

TAG:PHP技術大全 |