我有一个具有此功能的课程:
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 未定义
我如何克服这个问题?
答案 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_而离开。我会说试一试并使用你喜欢的东西。