關於PHP中MVC的一點開發心得_PHP教程

來源:互聯網
上載者:User
經過近一個月對MVC的研究,自己也通過網上有朋友的指導,有了一套自己的MVC流程及架構,但是感覺缺限還是很多,靈活性方面還是欠缺,但又不知道怎麼樣的具體改進,今天我就把我的流程及思想發布,希望有高人能夠指點指點。

一、入口
入口檔案可以是單檔案也可以是多檔案,我現在用的基本屬多檔案,但是入口檔案內容基本都是一樣,為以後的修改其它的入口方式做基礎,


首先不用說大家也看得出來,載入系統設定檔,然後通過引擎來載入系統配置。
二、引擎

public function run($config){ header("Content-type:text/html;charset=utf-8"); self::$config = $config; //載入系統配置 self::copyright(); self::testsystem(); //系統內容 self::setsystem(); //設定系統參數 self::incinfo(); if(!IN_WEB){exit('網站正關閉維護中,請稍候訪問!');} defined('KEHENG_DEBUG') or define('KEHENG_DEBUG',true); // 是否偵錯模式 self::setpath(); //設定系統路徑 self::getdatabase(); //測試資料庫 self::loadlib(); //載入庫 self::getRouteConfig(); //運行路由並載入控制器 }

引擎裡面首先設定設定檔,再測試系統參數,載入系統模組,取得配置在的網站資訊檔,設定網站需要的路徑,測試系統配置裡面的資料庫參數,載入庫檔案,最後是載入路由擷取請求地址。不知道這樣的流程對不對,只是我根據自己的學習自己編寫的一套而已,但裡面卻缺少緩衝,具體緩衝應該怎麼樣的設定。
這裡的資料庫測試是根據配置用哪一類型的資料庫,再載入對該類型資料庫操作的封裝檔案。
三、路由
以下為上面的最後一個函數,載入控制器檔案,根據設定檔獲得請求方式。

public function getRouteConfig(){ $route_type=self::$config[route][url_type]; switch($route_type){ case 1: //echo $_SERVER['SCRIPT_NAME'].'
'; $query_string=$_SERVER['QUERY_STRING']; //echo $_SERVER['REQUEST_URI'].'
'; $urlstr=$_GET['controller']; break; case 4: $url = end(explode('/', $_SERVER["PHP_SELF"])); $urlstr = strtolower(substr($url,0,-4)); break; } if(file_exists(Contr_DIR.'Controller.php')){ require Contr_DIR.'Controller.php'; //echo $urlstr; $template = self::$config['Templates']; controller::load($urlstr,$template); }else{ exit('控制器檔案不存在'); } }

四、控制器
控制器檔案也蠻簡單,只是根據路由分析出的地址來載入模型檔案和視圖檔案,

class controller{ public $obj; public function load($url,$template){ $config=$template; if(file_exists(Model_DIR.$url.'.model.php')){ $views = new views; //echo Model_DIR.$url.'.model.php'; require Model_DIR.$url.'.model.php'; $temp = $config[$url][0]; if($temp!='' && $temp!=null && isset($temp)){ if(file_exists(Templ_DIR.$temp)){ //echo Templ_DIR.$temp; require Templ_DIR.$temp; }else{ exit('視圖檔案不存在!'.$temp); } }else{ exit('此頁未設定顯示模板!'.$temp); } unset($views); }else{ exit('模型檔案不存在:'.$url.'.model.php'); } } } 

但裡面有個注意的是模型檔案裡面需要輸出的資料全部都是通過views這樣一個類進行輸出,包裡視圖檔案裡面所有的系統參數等。不知道,這種方法是不是顯示得多此一舉,原來是想把所有要輸出的資料進行封裝。
其它的模板檔案也都是用類進行了封裝,具體怎麼寫高人應該都知道了吧,這些只是我的個人見解,但是緩衝應該怎麼寫,現在還是一個模糊的概念,是不是在讀取資料的時候,方嚮應該是讀取緩衝,然後再判斷緩衝是否存在,再判斷是否需要建立緩衝呢?具體操作方法還是不是很明白。希望能有高人指點指點。

您可能感興趣的文章

  • PHP實現MVC開發得最簡單的方法,模型的思考
  • 分享一篇老外站長做流量的心得
  • php smarty中文截取外掛程式開發樣本
  • php計算兩個日期相隔多少年,多少月,多少日的函數
  • php和mysql中uft-8中文編碼亂碼的幾種解決辦法
  • php在數組中尋找某個值是否存在(in_array(),array_search(),array_key_exists())
  • php計算兩個日期相差多少天(日)的函數
  • php中的MVC模式運用技巧

http://www.bkjia.com/PHPjc/764138.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764138.htmlTechArticle經過近一個月對MVC的研究,自己也通過網上有朋友的指導,有了一套自己的MVC流程及架構,但是感覺缺限還是很多,靈活性方面還是欠缺,...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.