0

私はモデルを持っています-

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()しかし、親コントローラーのコンストラクター内でモデルを初期化したいと思います。助けてください。

4

2 に答える 2

0

モデルとコントローラークラスを含めて次のコードを実行すると、これは問題なく機能します

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

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

出力:

This is Home Model.
于 2013-02-27T08:03:03.450 に答える
0

それがファイルへのパスであると確信していますか。私が見たほとんどのフレームワークは通常、いたるところにファイルを持っているので、ファイルを取得するときに正しい親ディレクトリにいることを保証する定数を持つようにしています。

于 2013-02-27T08:01:38.767 に答える