php基于mvc开发教程,关于PHP中MVC的一点开发心得_PHP教程

经过近一个月对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模式运用技巧

www.bkjia.comtrueTechArticle经过近一个月对MVC的研究,自己也通过网上有朋友的指导,有了一套自己的MVC流程及框架,但是感觉缺限还是很多,灵活性方面还是欠缺,…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值