我制作了一个模板系统,但{var}并没有输出价值。 它只输出{var}。
这是我的模板类:
<?php
class Template {
public $assignedValues = array();
public $tpl;
function __construct($_path = '')
{
if(!empty($_path))
{
if(file_exists($_path))
{
$this->tpl = file_get_contents($_path);
}
else
{
echo 'Error: No template found. (code 25)';
}
}
}
function assign($_searchString, $_replaceString)
{
if(!empty($_searchString))
{
$this->assignedValues[strtoupper($_searchString)] = $_replaceString;
}
}
function show()
{
if(count($this->assignedValues) > 0)
{
foreach ($this->assignedValues as $key => $value)
{
$this->tpl = str_replace('{'.$key.'}', $value, $this->tpl);
}
}
echo $this->tpl;
}
}
?>
以下是我在索引上执行的内容:
<?php
require_once('inc/classes/class.template.php');
define('PATH', 'tpl');
//new object
$template = new Template(PATH.'/test.tpl.html');
//assign values
$template->assign('title', 'Yupa');
$template->assign('about', 'Hello!');
//show the page
$template->show();
?>
我真的需要一些帮助,如果你能提供帮助我会非常感激。
答案 0 :(得分:0)
而不是行:
$this->assignedValues[strtoupper($_searchString)] = $_replaceString;
你应该:
$this->assignedValues[$_searchString] = $_replaceString;
它会起作用。
当然我假设你的模板文件中有内容:
{title} {about}
答案 1 :(得分:0)
你应该改变
$this->assignedValues[strtoupper($_searchString)] = $_replaceString;
到此:
$this->assignedValues["{".$_searchString . "}"] = $_replaceString ;
这只会用值替换您的关键字。