2014-09-05
经过近一个月对MVC的研究,自己也通过网上有朋友的指导,有了一套自己的MVC流程及框架,但是感觉缺限还是很多,灵活性方面还是欠缺,但又不知道怎么样的具体改进,今天我就把我的流程及思想发布,希望有高人能够指点指点。
一、入口
入口文件可以是单文件也可以是多文件,我现在用的基本属多文件,但是入口文件内容基本都是一样,为以后的修改其它的入口方式做基础,
1 <?php
2 require 'command/config.php';
3 require 'command/app.php';
4 app::run($config);
5 ?>
首先不用说大家也看得出来,加载系统配置文件,然后通过引擎来加载系统配置。
二、引擎
1 public function run($config){
2 header("Content-type:text/html;charset=utf-8");
3 self::$config = $config; //加载系统配置
4 self::copyright();
5 self::testsystem(); //系统环境
6 self::setsystem(); //设置系统参数
7 self::incinfo();
8 if(!IN_WEB){exit('网站正关闭维护中,请稍候访问!');}
9 defined('KEHENG_DEBUG') or define('KEHENG_DEBUG',true); // 是否调试模式
10
11 self::setpath(); //设置系统路径
12 self::getdatabase(); //测试数据库
13 self::loadlib(); //加载库
14 self::getRouteConfig(); //运行路由并加载控制器
15 }
引擎里面首先设置配置文件,再测试系统参数,加载系统模块,取得配置在的网站信息文件,设置网站需要的路径,测试系统配置里面的数据库参数,加载库文件,最后是加载路由获取请求地址。不知道这样的流程对不对,只是我根据自己的学习自己编写的一套而已,但里面却缺少缓存,具体缓存应该怎么样的设置。
这里的数据库测试是根据配置用哪一类型的数据库,再加载对该类型数据库操作的封装文件。
三、路由
以下为上面的最后一个函数,加载控制器文件,根据配置文件获得请求方式。
1 public function getRouteConfig(){
2 $route_type=self::$config[route][url_type];
3 switch($route_type){
4 case 1:
5 //echo $_SERVER['SCRIPT_NAME'].'<br />';
6 $query_string=$_SERVER['QUERY_STRING'];
7 //echo $_SERVER['REQUEST_URI'].'<br />';
8 $urlstr=$_GET['controller'];
9 break;
10 case 4:
11 $url = end(explode('/', $_SERVER["PHP_SELF"]));
12 $urlstr = strtolower(substr($url,0,-4));
13 break;
14
15 }
16 if(file_exists(Contr_DIR.'Controller.php')){
17 require Contr_DIR.'Controller.php';
18 //echo $urlstr;
19 $template = self::$config['Templates'];
20 controller::load($urlstr,$template);
21 }else{
22 exit('控制器文件不存在');
23 }
24
25 }
四、控制器
控制器文件也蛮简单,只是根据路由分析出的地址来加载模型文件和视图文件,
1 class controller{
2 public $obj;
3 public function load($url,$template){
4
5 $config=$template;
6 if(file_exists(Model_DIR.$url.'.model.php')){
7 $views = new views;
8 //echo Model_DIR.$url.'.model.php';
9 require Model_DIR.$url.'.model.php';
10 $temp = $config[$url][0];
11 if($temp!='' && $temp!=null && isset($temp)){
12 if(file_exists(Templ_DIR.$temp)){
13 //echo Templ_DIR.$temp;
14 require Templ_DIR.$temp;
15 }else{
16 exit('视图文件不存在!'.$temp);
17 }
18 }else{
19 exit('此页未设置显示模板!'.$temp);
20 }
21 unset($views);
22 }else{
23 exit('模型文件不存在:'.$url.'.model.php');
24 }
25 }
26 }
但里面有个注意的是模型文件里面需要输出的数据全部都是通过views这样一个类进行输出,包里视图文件里面所有的系统参数等。不知道,这种方法是不是显示得多此一举,原来是想把所有要输出的数据进行封装。
其它的模板文件也都是用类进行了封装,具体怎么写高人应该都知道了吧,这些只是我的个人见解,但是缓存应该怎么写,现在还是一个模糊的概念,是不是在读取数据的时候,方向应该是读取缓存,然后再判断缓存是否存在,再判断是否需要建立缓存呢?具体操作方法还是不是很明白。希望能有高人指点指点。
摘自 九狐科技
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
常用dos命令及语法
09-27
PHP中include和require区别之我见
2014-09-05
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
球球大作战汉化版下载v19.7.1 安卓版
其它手游 170.54MB
下载
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游 34.82MB
下载
葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游 34.82MB
下载
葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游 34.82MB
下载
葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游 34.82MB
下载
像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游 206.87MB
下载
葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游 34.82MB
下载
末日餐厅安卓版下载v1.35安卓版
其它手游 73.98MB
下载葫芦侠十楼免费破解版下载v4.4.0.6安卓版
下载
葫芦侠8楼最新破解版下载v4.4.0.6安卓版
下载
猫娘乐园世界连结正版下载v1.9.1 安卓版
下载
像素漫斗全员下载v1.00安卓版
下载
葫芦侠8楼手机版下载v4.4.0.6安卓版
下载
末日餐厅正版官网入口下载v1.35安卓版
下载
我的汉克狗正版下载v26.4.1.48473 安卓版
下载
像素漫斗u鼬神最新版本下载v1.00安卓版
下载