目前主流的框架Zend Framework、Cakephp等都采用了MVC模式,同時實現了URL的路由分配。比如說http://www.xxx.com/user/login就會映射到userController對象中的loginAction方法,http:// " /> 在教室伦流澡到高潮H免费视频,japanese from色系,久久精品一本到东京热

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

逐步提升php框架的性能

一、當前框架存在什么問題

     目前主流的框架Zend Framework、Cakephp等都采用了MVC模式,同時實現了URL的路由分配。比如說http://www.xxx.com/user/login就會映射到userController對象中的loginAction方法,http://www.xxx.com/user/register對應為userController對象中的registerAction方法。這樣對應的userController對象就很可能是這樣的。

<? 
class userController extends controller{ 

      function loginAction(){ 
            //login 
      } 

      function registerAction(){ 

      } 

?>  

    那么這存在什么樣的問題呢?很明顯:包含了不必要的代碼!比如說你訪問/user/login完全沒必要包含registerAction()方法里面的內容。上面的代碼只是簡單的例子,一般來說controller對應的是一個小功能模塊,它會有比較多的功能操作的,尤其在比較大的項目中。這樣,如果一個controller里面有十幾個方法,那么每請求就包含了很多冗余的代碼。而在php性能提升中很重要的一點:盡量避免包含不相關代碼!
  在我最近的小項目中,我采用自己的phpbean框架(框架類似Zend Framework),在后來的開發發現的確每個controller包含太多action了,后來不得不考慮分流。但很不理想。項目地址:http://www.songjin.NET:8080。

二、問題不是因為面對對象的錯
   很多人認為“包含多余的冗余代碼是面對對象的錯誤”,我不同意。正如我上篇說的:面對對象能實現面對過程的所有功能,并且做的更好!關鍵是采用面對對象的思維來使用面對對象,而不是用面對過程的思維來寫面對對象的程序。

三、如何解決這個問題呢?
     解決的關鍵就是把action分離開來。如何分離呢?首先要清楚controller的作用。controller是控制器,主要是做請求的轉發,把http請求轉發到具體的action上。注意:在struts中是沒有存在controller文件的(注意不是說沒有控制器),它是直接映射到action文件。所以我們完全可以把controller直接放到路由轉發中,而真正的流程控制、邏輯處理等放到action中。
   比如說上面的例子,我們就可以分離成兩個文件:
loginAction.php

<? 
class loginAction extends Action{ 

    function run(){ 

    } 


?> 

和registerAction.php

<? 
class registerAction extends Action{ 

    function run(){ 

    } 


?> 

    這樣就實現了action的分離。當你訪問/user/login請求的時候就不會包含registerAction的代碼。
  但這樣又存在兩個問題:
    第一、實際項目中action文件會非常多,如何有效的管理是個關鍵。
  第二、同一功能模塊中的操作可能有共同的代碼,如何共享?

  第一個問題比較好解決。把同一個模塊的action放到一個子文件夾中,也就是說允許多級目錄。比如說我們上面的代碼中就可以把loginAction.php和registerAction.php放到user目錄中。但注意這樣會增加路由分配的麻煩度,如何實現就看讀者自己去思考了。

  第二個問題的解決也不難,關鍵是具有面向對象的思維。這里,我們就可以采用對象的繼承來實現。比如說上面的例子,我們可以先定義一個user抽象類。

<? 
   class user extends Action(){ 

         function __contruct(){ 
               //比如說權限檢查 
         } 
   } 
?> 

    然后讓loginAction 和RegisterAction都繼承與user。這樣就可以很好解決了。

四、總結
    上面的解決方案只是我這幾天的想法,可能還不夠完善。具體應用大家可以再細化并優化。對于MVC、框架我始終認為在php5中,對象比過程更適合,也更有效(除去創建對象本身的成本)。對于使用函數來實現框架,前一段在PCTI的講課中我也試過,我覺得思路都差不多,但相對來說我更喜歡對象。
   最后,上面的解決方案參考了Java中的struts的部分思想。在此表示感謝!

php技術逐步提升php框架的性能,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 战狼4在线观看完免费完整版 | 国产午夜精AV在线麻豆 | 在线观看中文字幕码2021不用下载 | 欧美成人无码A区在线观看免费 | 视频一区视频二区在线观看 | 日日a.v拍夜夜添久久免费 | 欧美高清videossexo | 国产成人拍精品免费视频爱情岛 | 少女开女包www | 中国大陆一级毛片免费 | 永久免费观看视频 | 小SAO货水真多把你CAO烂 | 亚洲第一免费播放区 | 掀开奶罩边躁狠狠躁软学生 | 午夜国产精品免费观看 | 538在线播放 | 超清无码波多野吉衣与黑人 | CHINA篮球体育飞机2023 | 洗濯屋H纯肉动漫在线观看 羲义嫁密着中出交尾gvg794 | 快播h动漫网站 | 亚洲免费视频在线 | 亚洲午夜精品aaa级久久久久 | 久久伊人草 | 国产精品久久毛片A片软件爽爽 | 扒开 浓密 毛| 亚洲一区免费观看 | 成人免费一级毛片在线播放视频 | 亲爱的妈妈6韩国电影免费观看 | 青柠在线观看免费全集 | 男生在床上脱美女 胸 | 国产在线观看www | 国产一在线精品一区在线观看 | 欧美14videosex性欧美成人 | 亚洲激情一区 | 国产亚洲精品香蕉视频播放 | 成人AV无码一二二区视频免费看 | 美女搜查官被高难度黑人在线播放 | 竹菊精品久久久久久久99蜜桃 | 亚洲AV国产精品无码精 | 成人无码精品一区二区在线观看 | 久草在线在线精品观看 |