2012-04-08 3 views
1

У меня есть модель класса ModelHome, что является потомком модели, а именно:Определение, Надлежащая Scope Класс PHP

class ModelHome extends Model 

Модель является переменной класса контроллера, т.е.:

class Controller { 

    public $model; 

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

Можно ли получить доступ к методу внутри класса Controller из метода внутри класса ModelHome?

Я пробовал родительский :: и вызывал класс по имени, т.е. метод Controller ::, но я не могу найти подходящую область для доступа к методу, в котором я нуждаюсь.

Спасибо.

-Vince

ответ

2

Прежде всего, вы должны иметь экземпляр ModelHome. Если вы делаете экземпляр Model, это не было автоматически распространено на ModelHome только потому, что существует ModelHome. Таким образом, я предполагаю, что ваш Controller::__construct() должно быть:

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

Однако ваш ModelHome не знает о вашем Controller класса/экземпляра. Вы можете сделать __construct в ModelHome, который принимает параметр со ссылкой на контроллер. Как это:

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-> модельно> нагрузки («дома») который расширяет класс. Но я думаю, что это отличное решение. Я могу создать защищенную переменную в модели и просто перейти в контроллер, а затем из ModelHome я могу назвать родительский метод блестящим. Спасибо Альфреду. –

Смежные вопросы