PHP如何返回调用函数(避免函数范围)

时间:2012-07-21 12:13:44

标签: php call require

我有两个文件:

的template.php:

<div><?php echo $myVar; ?></div>

控制器

class MyClass extends Base {
    public function view() {
        $myVar = 'hello world';
        $this->loadTemplate('main');
    }
}
abstract class Base {
    public function loadTemplate($template) {
        require_once("templates/$template.php");
    }
}

但这必须不起作用,因为require在loadTemplate函数的范围内,如何在loadTemplate中返回对require函数的调用? 我希望使用单个函数(如$ this-&gt; loadTemplate();)将require包含在view()范围内。而不是使用require_once($ this-&gt; getTemplatePath())

任何想法?

2 个答案:

答案 0 :(得分:2)

你做不到。通常,您尝试执行的操作是通过传递包含变量的数组($this->loadTemplate(array('myVar' => 'hello world'))),然后在extract($vars)方法中调用loadTemplate来完成的。

答案 1 :(得分:2)

只需使用类成员来访问viewscript中的变量

<强>类

class MyClass extends Base
{
    public function view()
    {
        $this->myVar = 'hello world';
        $this->loadTemplate('main');
    }
}

abstract class Base
{
    public function loadTemplate($template)
    {
        require_once("templates/$template.php");
    }
}

模板 main.php

Output: <?= $this->myVar ?>