Просто передайте шаблон в качестве параметра подпредставлениям, которые вы создадите. Я не думаю, что это было бы злом в этом случае. Хотя, если это стандартная структура, вам лучше спросить на их форумах, потому что они могут иметь функциональность, о которой мы не знаем в этом случае (обычно это происходит)
Вы могли бы иметь что-то вроде
class LayoutView {
protected View $subview; //Potentially an array of views
public function prepare() {
// empty, to be filled out by derived classes
}
public function setSubView($view) { $this->subview = $view; }
public function display() {
$this->prepare();
$this->subview->prepare($this->template);
$this->template->render();
}
}
class IndexView {
protected View $subview; //Potentially an array of views
public function prepare() {
// empty, to be filled out by derived classes
}
public function prepare($template) {
//operate on it, maybe even assigning it to $this->template
}
public function setSubView($view) { $this->subview = $view; }
public function display() {
$this->prepare();
$this->subview->prepare($this->template);
$this->template->render();
}
}