【发布时间】:2014-06-23 20:32:12
【问题描述】:
我正在尝试重构一些代码,并且有使用全局变量的模板。函数内部的require 和include 只使用局部作用域,那么有没有办法“要求全局”?
现在,我们有相当多的代码行在所有路由器文件中重复,就像这样。本期所指的声明:
require 'header.php';
require $template;
require 'footer.php';
这些语句可以在全局范围内找到。我正在尝试将这些重构为这样的类中的方法:
class Foo {
/**
* Template file path
* @var string
*/
protected $template;
public function outputHTMLTemplate() {
header("Content-Type: text/html; charset=utf-8");
require 'header.php';
if (file_exists($this->template)) {
require $this->template;
}
require 'footer.php';
}
}
假设我有template.php,在模板里面有像这样的超全局变量和全局变量:
<h1>Hello <?= $_SESSION['username']; ?></h1>
<ul>
<?php
foreach ($globalVariable1 as $item) {
echo "<li>$item</li>";
}
?>
</ul>
这是一个简化的例子,在实际的模板中可能会有很多全局变量。
我应该如何将输出代码移动到方法中?
【问题讨论】: