云彩无色3804005
2018-03-16 12:00
index.php代码
<?php
//url形式 index.php?controller=控制器&method=方法名
require_once('function.php'); //带引号才行
$controllerAllow=array('test','index');
$methodAllow=array('test','index','show');
$controller=in_array($_GET['controller'],$controllerAllow)?daddslashes($_GET['controller']):'index';
$method=in_array($_GET['method'],$methodAllow)?daddslashes($_GET['method']):'index';
C($controller,$method);
?>
function.php代码
<?php
function C($name,$method){ //C控制器缩写大 ,方法里面可以传参数,所以方法可以在传参
require_once('/libs/Controller/'.$name.'Controller.class.php'); //引入控制器文件
eval('$obj=new '.$name.'Controller();$obj->'.$method.'();'); //eval()函数调用简单但是不安全
}
C('test','show');
function M($name){ //M模型缩写大 ,方法里面不可以传参数
require_once('/libs/Model/'.$name.'Model.class.php');
/* $testModel=new testModel();//控制器 -> 按指令选取一个合适的模型
$data=$testModel->get(); //模型 -> 按控制器指令取相应数据 */
eval('$obj=new '.$name.'Model();');
return $obj;
}
function V($name){
require_once('/libs/View/'.$name.'View.class.php');
eval('$obj=new '.$name.'View();');
}
function daddslashes($str){ //daddslashes()用来转义非法字符 函数返回在预定义字符之前添加反斜杠的字符串。
return(!get_magic_quotes_gpc())?addslashes($str):$str;
}
?>
testController.class.php代码
<?php
class testController{
function show(){//控制器的作用是调用模型,并调用视图。将模型产生的数据传递给视图,并让相关视图去显示
$testModel=M('test');
$data=$testModel->get();
$testView=V('test');
$testView->display($data);
}
}
?>
谢谢 云彩无色3804005 贴出代码
首先你要确定,没加index.php之前,访问你的代码function.php你的代码没有错误,如果有,说明是你的几个函数哪里写错了,如果没有,说明是index.php写错了。然后你在看你传入的controller和method,先打印出你传入的controller和method,再看看有没有问题。
这个事说你的对象没有display方法,我看你是view调用的display方法,看看testView.class.php中你对testView这个class定义display这个方法了吗
MVC架构模式分析与设计
82400 学习 · 929 问题
相似问题