我有很多 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");
}
无论如何要声明包含文件的范围,还是这是解决问题的最佳方法?
这些例子是粗略的简化。