2012-04-08 92 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