У меня довольно много файлов представлений PHP, которые я использовал для включения в свои контроллеры с помощью простых операторов включения. Все они используют методы, объявленные в классе представления, которые они получают как $view->method(); Однако недавно я решил, что было бы лучше, если бы включение также выполнялось этим классом представления. Однако это изменяет область действия включенного файла, так что $view больше не определяется. Вот пример кода:
in someViewFile.php (BOTH siuations)
<html>
<head><title><?php echo $view->getAppTitle(); ?></title>
etc.
OLD SITUATION in controller:
$view = new view;
include('someViewFile.php'); //$view is defined in someViewFile.php
NEW SITUATION in controller:
$view = new view;
$view->show('someViewFile'); //$view is not defined in someViewFile.php
Прямо сейчас я взломал проблему, используя это в классе представления:
public function show($file){
$view = &$this;
include($file.".php");
}
Можно ли как-то объявить область действия включенного файла или это лучший способ решить проблему?
Эти примеры очень упрощены.