Yaf框架的擴展-mvc-路由配置-模版視圖smarty加載

Yaf(Yet Another Framework) (另一種框架(本身的理解))

(摘抄)yaf優勢: html

 

   1.用C語言開發的PHP框架, 相比原生的PHP, 幾乎不會帶來額外的性能開銷.
    2.全部的框架類, 不須要編譯, 在PHP啓動的時候加載, 並常駐內存.
    3.更短的內存週轉週期, 提升內存利用率, 下降內存佔用率.
    4.靈巧的自動加載. 支持全局和局部兩種加載規則, 方便類庫共享.
    5.高性能的視圖引擎.
    6.高度靈活可擴展的框架, 支持自定義視圖引擎, 支持插件, 支持自定義路由等等.
    7.內建多種路由, 能夠兼容目前常見的各類路由協議.
    8.強大而又高度靈活的配置文件支持. 並支持緩存配置文件, 避免複雜的配置結構帶來的性能損失.
    9.在框架自己,對危險的操做習慣作了禁止.
    10.更快的執行速度, 更少的內存佔用.

如期所說同樣yaf的性能確實很是的高,幾乎不會帶來什麼額外的性能開銷,是值得使用框架,下面就我本身的學習來講明下yaf相應的知識點: 數據庫

1:mvc模式: 緩存

               Yaf提供了最基本的mvc模式 其流程圖以下: mvc

 

這就是yaf所有的流程圖,很清晰告訴咱們yaf處理請求了流程。  app

2:插件 框架

      yaf提供了插件功能給咱們提供了擴展的留下了空間,要定義插件就要繼承Yaf_Plugin_Abstract,同時它有6個hook oop

觸發順序 名稱 觸發時機 說明
1 routerStartup 在路由以前觸發 這個是7個事件中, 最先的一個. 可是一些全局自定的工做, 仍是應該放在Bootstrap中去完成
2 routerShutdown 路由結束以後觸發 此時路由必定正確完成, 不然這個事件不會觸發
3 dispatchLoopStartup 分發循環開始以前被觸發  
4 preDispatch 分發以前觸發 若是在一個請求處理過程當中, 發生了forward, 則這個事件會被觸發屢次
5 postDispatch 分發結束以後觸發 此時動做已經執行結束, 視圖也已經渲染完成. 和preDispatch相似, 此事件也可能觸發屢次
6 dispatchLoopShutdown 分發循環結束以後觸發 此時表示全部的業務邏輯都已經運行完成, 可是響應尚未發送

你能夠在你想處理的地方加上本身的擴展,而後在路由的時候註冊你的查件就能夠了。  post

3:路由 性能

    yaf的路由已經能夠知足絕大部分的功能須要,應用中路由組件是由路由和路由協議組成的,路由只有一個路由協議能夠有不少,你能夠根據本身的需求定義本身的路由,其中用的最多的就是Yaf_Route_Regex 正在路由 他可以完成你想要的路由下面是本身根據項目定義的路由: 學習

 

要注意的當你要使用多modules時要在application.modules = Index ,Shop加上你本身定義的模塊

同時在正則路由時要代表要路由大那個模塊下面就是要指明模塊名稱:routes.regex_index.route.module = Shop 

 4:BootStarp

Bootstrap, 也叫作引導程序. 它是Yaf提供的一個全局配置的入口, 在Bootstrap中, 你能夠作不少全局自定義的工做.

全部在Bootstrap類中定義的, 以_init開頭的方法, 都會被依次調用, 而這些方法均可以接受一個Yaf_Dispatcher實例做爲參數. 

5:數據庫

yaf沒有提供關於數據庫方面的繼承這就須要根據本身的須要擴展本身的數據庫,同時你也能夠將zendframwork中的數據庫類加載進來,個人數據庫的目錄結構是:

 

而後你就能夠在繼承本身的數據庫擴展,提升開發效率。 

6:smarty 

 yaf提供的視圖加載不是那麼好用同時爲了兼容之前的項目我加入了smarty模版

在yaf中加入smary模版讓人很頭疼的是smarty文件的目錄結構和yaf自動加載的目錄不同就會形成文件加載不到,這個問題我已經在我博客中解決了 。

 

yaf能夠說一個最輕量級的框架,他提供你擴展空間。 

 這個我是我整個項目的目錄結構圖以下:

 

歡迎隨時和我交流個人qq號是:511520590 

相關文章
相關標籤/搜索