2012-04-08 121 views
1

我有一個模型類ModelHome是模型的孩子即:確定正確的類範圍PHP

class ModelHome extends Model 

模式是Controller類即一個變量:

class Controller { 

    public $model; 

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

是否有可能從ModelHome類中的方法內訪問Controller類中的方法?

我試過父::和名稱即控制器::方法調用類,但我似乎無法找到正確的範圍訪問我需要的方法。

謝謝。

-Vince

回答

2

首先,你必須有ModelHome一個實例。如果您創建了Model的實例,但由於ModelHome的存在,該實例尚未自動被ModelHome擴展。所以,我想你Controller::__construct()應該是:

public function __construct() { 
    $this->model = new ModelHome; 
} 

但是,你ModelHome不知道你Controller類/實例。您可以在ModelHome中創建一個__construct,該參數帶有一個帶有到控制器的鏈接的參數。就像這樣:

class ModelHome extends Model { 

    public $controller; 

    public function __construct ($controller) { 
     $this->controller = $controller; 
    } 
} 

class Controller { 

    public $model; 

    public function __construct() { 
     $this->model = new ModelHome($this); 
    } 
} 

現在,您ModelHome使用$this->controller

+0

模型由ModelHome擴展知道控制器控制器即子類函數:$ this->模型 - >負載(「家」)這擴大了班級。但我認爲這是一個很好的解決方案。我可以在Model中創建一個受保護的變量,只需傳入控制器,然後從ModelHome中調用父級方法,即可。謝謝阿爾弗雷德。 – 2012-04-08 12:08:04