创建一个 require() 别名函数



>我有一个带有这个函数的类:

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.";

在这种情况下,我收到一个错误,因为"myname.php"实际上包含在类的文件中,因此$name未定义。

如何克服这个问题?

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

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_"函数,我们可以捕获输出缓冲区,然后根据需要对其进行回显。

您可能可以在不使用ob_的情况下逃脱,只需在尝试时回显 require 方法即可。我会说试一试,使用你喜欢的东西。

最新更新