我想在与我需要它运行的文件相同的文件上运行模板引擎,所以我有模板引擎,使{username}等内容变成HTML中的PHP变量,在与处理它的所有内容相同的页面。但是,如果我尝试这样做,我得到一个类已被调用错误,我已经尝试修复此错误,但这是我得到的最接近的,无论如何修复此错误?这是我的代码:
<?php
//error_reporting(0);
if(in_array('NewTemplateHandler', get_declared_classes()))
{
$template = new NewTemplateHandler("test4.php");
$template->output();
//echo "Template has not been called";
}else
{
echo "Else called";
}
class NewTemplateHandler
{
protected $file;
protected $values = array();
public function __construct($file)
{
//$_GLOBALS["ran"] = true;
$this->file = $file;
$this->__set("test", "Template Working");
echo "Template Class Called.";
}
public function __set($key, $value)
{
$this->values[$key] = $value;
echo "$key set as $value<br />";
}
public function output()
{
if(!file_exists($this->file))
{
echo "ERROR: Template file not found.";
}
$output = file_get_contents($this->file);
foreach($this->values as $key => $value)
{
$find = "{".$key."}";
$output = str_replace($find, $value, $output);
}
//$_GLOBALS["ran"] = true;
return eval("?>".$output);
}
}
?>
<br />
Thing-> {test}
答案 0 :(得分:1)
这就是你需要的。
if(!in_array('NewTemplateHandler', get_declared_classes())) {
$template = new NewTemplateHandler("test4.php");
$template->output();
}
你之前做的是:
IF
(TRUE)
THEN
START NEW TEMPLATE
ELSE
ECHO "Else called"
您要做的是检查get_declared_classes()
数组中是否。