设为首页 收藏本站
查看: 1168|回复: 0

[经验分享] [原创]有关PHP 中 MVC的个人见解

[复制链接]

尚未签到

发表于 2015-8-24 01:52:08 | 显示全部楼层 |阅读模式
  经过近一个月对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(!keheng_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这样一个类进行输出,包里视图文件里面所有的系统参数等。不知道,这种方法是不是显示得多此一举,原来是想把所有要输出的数据进行封装。
  转载请注明出处:http://www.iyunv.com/keheng/archive/2012/05/17/2506155.html     作者:[九狐科技]keheng
  其它的模板文件也都是用类进行了封装,具体怎么写高人应该都知道了吧,这些只是我的个人见解,但是缓存应该怎么写,现在还是一个模糊的概念,是不是在读取数据的时候,方向应该是读取缓存,然后再判断缓存是否存在,再判断是否需要建立缓存呢?具体操作方法还是不是很明白。希望能有高人指点指点。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103181-1-1.html 上篇帖子: 飞信机器人PHP版 免费发短信 调用接口下载 下篇帖子: PHP Cookbook读书笔记 – 第24章目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表