3. MVC 实例开发(二)

单一入口机制

指对某个网站的访问都必须通过某个特定的脚本文件,比如我们经常看到某个网站的所有页面都是index.php?xxxx这样的形式。
这种方式带来的好处就是便于访问控制、能更好预防黑客攻击
网站的其他页面通过拼接连接地址访问

MVC 目录规范

本课程目录规范

注意:这里的index.php即所说的单一入口

MVC的简易调用

在上面一篇文章中,我们用简单的例子实现了MVC的开发。

这里,我们要简化步骤,使MVC的使用更加方便。将之前test.php文件中做的处理,用函数封装起来
--> 以实现ControllerModelView的调用和其中方法的执行

<?php
    funtion C($name, $method){
        require_once('/libs/Controller/'.$name.'Controller.class.php');
        // 将String类型转换成可执行的php语句
        // $testController改成obj
        eval('$obj = new '.$name.'Controller(); $obj->'.$method.'();')  
    }

    function M($name){
        require_once('libs/Model/'.$name.'Model.class.php');
        // $model=new $name.'Model';
        // $obj=new §model();
        eval('$obj=new '.$name.'Model()');
        return $obj;
    }

    function V($name){
        require_once('libs/View/'.$name.'View.class.php');
        // $view=new $name.'View';
        // $obj=new $view();
        eval('$obj=new '.$name.'View();');
        return $obj;
    }

    // 对一些非法字符进行转义
    function daddslasches($str){
        return(!get_magic_quotes_gpc())?addslashes($str):$str;
    }

?>```

## 入口文件的改造与功能总结
1.统一入口文件为首的URL格式
2.在入口文件里使用安全的方式,来接收传递来的Controller名和method名

在入口文件index.php中做如下处理:

<?php
// 引入function文件
require_once('function.php');

$controllerAllow=array('test','index');
$methodAllow=array('test', 'index', 'show');

// url形式: index.php?controller=控制器名&method=方法名
// 在php中接收url的方式为get

// 安全措施 1: 判断该controller是不是在指定的array中(in_array方法)
// 安全措施 2: 使用daddslasches方法
$controller=in_array($_GET['controller'], $controllerAllow)?daddslasches($_GET['controller']):'index';  //接收controller
$method=in_array($_GET['method'], $methodAllow)?daddslasches($_GET['method']):'index';  //接收method

C($controller,$method);

?>```

接下来可以在浏览器中输入http://mvc.test/index.php?controller=test&method=show即可看到结果,该url中清楚的指明了该web,是将index.php作为入口,选择的控制器为test,方法为show。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,292评论 25 708
  • 狗狗追逐自己的尾巴会有许多原因,从小时候的无聊、好玩,到脑部病变导致不断追逐尾巴,前后两者的差异很是容易区分的,前...
    黄月庭阅读 2,454评论 0 0
  • 文字|至简从心 拍照|至简从心 相机|水果七屁 那一抹秋的颜色,擦去了一道轮回; 就如同南飞的大雁,带走了一道天际...
    至简从心阅读 348评论 36 31