控制器内的类初始化

时间:2013-02-27 07:45:40

标签: php controller parent-child

我有一个模特 -

class Model{
    public $childModel;
     public function getModel($url){
     $this->childModel = 'model/'.$url;
     include($this->childModel);
     new ModelHomeHome();
     }
    }

这是儿童模特 -

class ModelHomeHome extends Model{
    function __construct(){
        echo 'This is Home Model.';
    }

}

控制器类 -

class Controller{
public $model;
 function __construct(){
  $this->model = new Model();
 }
}

这是子控制器 -

class ControllerHomeHome extends Controller{
 function help(){
 $this->model->getModel('home/home.php');
 }
}

并在页面中

include(controller.php);
include(model.php);

问题是子模型类没有初始化。 致命错误:在非对象上调用成员函数getModel()

如果我将$this->model = new Model();放在子控制器的help()函数内而不是放在父控制器内,它就可以工作。但我想在父控制器的构造函数内初始化模型。请帮忙。

2 个答案:

答案 0 :(得分:0)

您确定这是您文件的路径吗?我见过的大多数框架通常都有文件,因此我尝试使用常量来确保在检索文件时我在正确的父控件中。

答案 1 :(得分:0)

当我包含模型和控制器类并运行以下代码时,这对我来说很好用

include('controller.php');
include('model.php');

$home = new ControllerHomeHome();
$home->help();

输出:

This is Home Model.