首页 > php技术 > php文章> 详细内容
MVC架构模式分析与设计
日期:2019-01-31 

建立一个控制器调用函数C

//多个控制器,里面包含多种方法,给定不同参数去调用某个控制器、方法即可。

function C($name, $method){

require_once('/libs/Controller/'.$name.'Controller.class.php');//引入控制器文件

//$testController=new testController();实例化

//$testController->show();使用方法

eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//eval()将字符转化为可执行的php语句;$testController替换为$obj, test替换为’.name.’

}

建立一个模型调用函数M

//模型的方法自带参数,不封装使用起来更为灵活;控制器随引用方法,但不允许有自己的参数

function M($name){

require_once('/libs/Model/'.$name.'Model.class.php');

eval('$obj = new '.$name.'Model();');

return $obj;//返回实例化产生的对象

}

建立一个视图调用函数V

function V($name){

require_once('/libs/View/'.$name.'View.class.php');

eval('$obj = new '.$name.'View();');

return $obj;

}

创建一个入口文件index.php

a. 统一入口文件为首的url格式(如index.php?controller=控制器名&method=方法名)

b. 在入口文件里使用安全的方式接收传递来的控制器名和方法名

wpsEA25.tmp

其中使用的daddslashes()函数,在function.php中定义

//对非法字符进行转义,因为要对GET()方法的取得进行过滤

function daddslashes($str){

//addslashes()对单引号等特殊字符进行转义

//判断当前打开状态,打开时返回true,并自动进行转义,没有打开则使用addslashes()

return (!get_magic_quotes_gpc())?addslashes($str):$str;

}

function.php文件如下:

wpsEA26.tmp

testController.class.php文件修改为:

wpsEA37.tmp

配置测试网址(url形式 index.php?controller=控制器名&method=方法名)

测试结果:

wpsEA47.tmp