程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 關於PHP中MVC的一點開發心得

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

編輯:關於PHP編程

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

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

<?php 
require 'command/config.php'; 
require 'command/app.php'; 
app::run($config); 
?>

首先不用說大家也看得出來,加載系統配置文件,然後通過引擎來加載系統配置。
二、引擎

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'].'<br />'; 
$query_string=$_SERVER['QUERY_STRING']; 
//echo $_SERVER['REQUEST_URI'].'<br />'; 
$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模式運用技巧

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved