在PHP中通过helper方法访问包含文件中的变量
我正在尝试构建一个php类,它将允许我包含其他要显示的php“模板”文件。我希望调用它的范围内的所有变量都可以在包含的文件中使用。这里有一个问题,我想把实际的include传递给一个helper方法,以保持代码干燥。以下是我到目前为止的情况:在PHP中通过helper方法访问包含文件中的变量,php,include,scope,Php,Include,Scope,我正在尝试构建一个php类,它将允许我包含其他要显示的php“模板”文件。我希望调用它的范围内的所有变量都可以在包含的文件中使用。这里有一个问题,我想把实际的include传递给一个helper方法,以保持代码干燥。以下是我到目前为止的情况: /* TemplateLoader.php */ class TemplateLoader { public function foo() { $var = "FOO!"; //Works include 'template.p
/* TemplateLoader.php */
class TemplateLoader {
public function foo() {
$var = "FOO!";
//Works
include 'template.php';
}
public function bar() {
$var = "BAR!";
//Doesn't work
$this->render("template");
}
private function render( $name ) {
include $name . '.php';
}
}
/* template.php */
<?php echo $var; ?>
/*TemplateLoader.php*/
类模板装载器{
公共功能foo(){
$var=“FOO!”;
//工作
包括“template.php”;
}
公共功能条(){
$var=“BAR!”;
//不起作用
$this->render(“模板”);
}
私有函数render($name){
包括$name.'.php';
}
}
/*template.php*/
我的问题是:如何在仍然使用helper方法实际执行“繁重任务”的情况下,实现在原始方法中直接包含模板的行为?我非常感谢您提供的任何帮助 这是我第一次想到的——我不确定我是否太喜欢它,但我不确定是否有通用的替代品。这将使用捕获所有当前变量,并将它们传递到
render()
,在那里对它们进行编辑,从而可由包含的文件访问
在将返回传递到render()
之前,您可能会过滤来自的返回,但我应该可以工作
public function bar() {
$var = "BAR!";
$this->render("template", get_defined_vars());
}
private function render( $name, &$vars) {
extract( $vars);
include $name . '.php';
}
在将返回传递到
render()
之前,您可能会从get\u defined\u vars()
过滤返回,但它应该可以工作 这正是我想要的。我以前甚至不知道get_defined_vars()函数。
public function bar() {
$var = "BAR!";
$this->render("template", get_defined_vars());
}
private function render( $name, &$vars) {
extract( $vars);
include $name . '.php';
}