Rumah >pembangunan bahagian belakang >tutorial php >通过实例了解PHP的mvc开发

通过实例了解PHP的mvc开发

WBOY
WBOYasal
2016-07-25 09:05:251123semak imbas
  1. require 'command/config.php';
  2. require 'command/app.php';
  3. app::run($config);
  4. ?>
复制代码

加载系统配置文件,然后通过引擎来加载系统配置。

二、引擎

  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. self::setpath(); //设置系统路径
  11. self::getdatabase(); //测试数据库
  12. self::loadlib(); //加载库
  13. self::getRouteConfig(); //运行路由并加载控制器
  14. }
复制代码

首先,设置配置文件,再测试系统参数,加载系统模块,取得配置在的网站信息文件,设置网站需要的路径,测试系统配置里面的数据库参数,加载库文件,最后是加载路由获取请求地址。 以上流程只是我根据自己的学习自己编写的一套而已,但里面却缺少缓存,具体缓存应该怎么样的设置。 这里的数据库测试是根据配置用哪一类型的数据库,再加载对该类型数据库操作的封装文件。

三、路由 以下为上面的最后一个函数,加载控制器文件,根据配置文件获得请求方式。

  1. /**
  2. 路由
  3. @link http://bbs.it-home.org
  4. */
  5. public function getRouteConfig(){
  6. $route_type=self::$config[route][url_type];
  7. switch($route_type){
  8. case 1:
  9. //echo $_SERVER['SCRIPT_NAME'].'
    ';
  10. $query_string=$_SERVER['QUERY_STRING'];
  11. //echo $_SERVER['REQUEST_URI'].'
    ';
  12. $urlstr=$_GET['controller'];
  13. break;
  14. case 4:
  15. $url = end(explode('/', $_SERVER["PHP_SELF"]));
  16. $urlstr = strtolower(substr($url,0,-4));
  17. break;
  18. }
  19. if(file_exists(Contr_DIR.'Controller.php')){
  20. require Contr_DIR.'Controller.php';
  21. //echo $urlstr;
  22. $template = self::$config['Templates'];
  23. controller::load($urlstr,$template);
  24. }else{
  25. exit('控制器文件不存在');
  26. }
  27. }
复制代码

四、控制器 控制器文件也蛮简单,只是根据路由分析出的地址来加载模型文件和视图文件,

  1. /**
  2. 控制器
  3. @link http:/bbs.it-home.org
  4. */
  5. class controller{
  6. public $obj;
  7. public function load($url,$template){
  8. $config=$template;
  9. if(file_exists(Model_DIR.$url.'.model.php')){
  10. $views = new views;
  11. //echo Model_DIR.$url.'.model.php';
  12. require Model_DIR.$url.'.model.php';
  13. $temp = $config[$url][0];
  14. if($temp!='' && $temp!=null && isset($temp)){
  15. if(file_exists(Templ_DIR.$temp)){
  16. //echo Templ_DIR.$temp;
  17. require Templ_DIR.$temp;
  18. }else{
  19. exit('视图文件不存在!'.$temp);
  20. }
  21. }else{
  22. exit('此页未设置显示模板!'.$temp);
  23. }
  24. unset($views);
  25. }else{
  26. exit('模型文件不存在:'.$url.'.model.php');
  27. }
  28. }
  29. }
复制代码

注意: 模型文件里需要输出的数据全部都是通过views这样一个类进行输出,包里视图文件里面所有的系统参数等。 不知此种方法是否多此一举,原来是想把所有要输出的数据进行封装。 其它的模板文件也都是用类进行了封装。 至于,mvc中的缓存应该怎么写,现在还是一个模糊的概念,是不是在读取数据时,方向应该是读取缓存,然后再判断缓存是否存在,再判断是否需要建立缓存呢? 期待有高人指点下,请加入脚本学堂官方QQ群:161228069 参与讨论吧。



Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn