创建一个require()别名函数

时间:2016-02-27 20:03:39

标签: php function class

我有一个具有此功能的课程:

public function loadTemplate($template)
{
    return require "templates/$template.php";
}

没关系,但我有问题。

我们说我有这段代码:

require('class.php');    
$class = new ClassName; // ClassName is the class which contains the function loadTemplate()
$name = 'Jerry';
$class->loadTemplate('myname');

" myname.php" 是:

<?php
echo "My name is $name.";

在这种情况下,我收到错误,因为&#34; myname.php&#34; 实际上包含在类的文件中,所以 $ name 未定义

我如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

不讨论这是否是最好的设计,这是你如何做到的。

public function loadTemplate($template, $vars)
{
    extract($vars);
    ob_start();
    require "templates/$template.php";
    $viewContent = ob_get_contents();
    ob_get_clean();
    return $viewContent;
}

将变量作为关联数组传递:

$vars = ['name' => 'Jerry']

然后输出:

echo $class->loadTemplate('myname', $vars);

它的作用是,它从数组创建变量并加载视图,但是使用“ob_”函数,我们捕获输出缓冲区,然后在需要时回显它。

你可能只是通过在尝试时回显require方法而不使用ob_而离开。我会说试一试并使用你喜欢的东西。