问答详情
源自:4-5 [MVC实例]入口文件功能

Fatal error: Call to a member function display() on null 怎么解决??代码都贴出来了

http://img1.mukewang.com/5aab40c6000105d112680213.jpg

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 2018-03-16 12:00

个回答

  • qq_默默_77
    2018-05-31 12:14:44

    谢谢 云彩无色3804005 贴出代码

  • 紫雨氤氲
    2018-03-20 17:35:31

    首先你要确定,没加index.php之前,访问你的代码function.php你的代码没有错误,如果有,说明是你的几个函数哪里写错了,如果没有,说明是index.php写错了。然后你在看你传入的controller和method,先打印出你传入的controller和method,再看看有没有问题。

  • 紫雨氤氲
    2018-03-19 17:09:09

    这个事说你的对象没有display方法,我看你是view调用的display方法,看看testView.class.php中你对testView这个class定义display这个方法了吗