如何在Model中运行方法MVC

时间:2012-03-13 01:11:35

标签: php model-view-controller

在索引文件中我有_autoload并加载了libs然后我爆炸了url来获取想要的控制器和模型(如果存在)。在视图中我可以看到模型__construct()所以模型已加载但如果我尝试使用$this->model->test();我得到

  

在非对象

上调用成员函数test()

http://site.com/ 关于

$this->request = about;
$controller = new $this->request;
$controller->loadModel($this->request); 

Everething工作正常

* 这是主控制器*

class Conroller  {

    function __construct() {
        // echo 'Main controller<br />';
        $this->view = new View();
    }

    public function loadModel($name) {
        $path = 'models/'.$name.'_model.php';
        if (file_exists($path)) {
            require 'models/'.$name.'_model.php';
            $modelName = $name . '_model';
            // **here i make the object** 
            $this->model = new $modelName();
        }       
    }

}

以下是关于型号

class about_model{

    function __construct() {
        echo 'test';
    }

    public function test() {
        $test = 'test one';
    }

}

这是About Conroller

class About extends Conroller {

   function __construct(){
       parent::__construct();
       $this->model->test();
       $this->view->render('/about');
   }

}

1 个答案:

答案 0 :(得分:1)

在您参考模特之前,您需要在loadModel控制器中致电About

class About extends Conroller {

   function __construct(){

     parent::__construct();

     $this->loadModel('about');
     $this->about->test();
   }
}