我使用以下内容替换.tpl
文件中的大括号标记,这是一种准模板引擎。当我只需要这三个简单的东西时,我真的不想要有模板引擎的开销。我遇到的问题是,当我调用一个生成例如导航(buildNav
)的函数时,当页面呈现它们由于某种原因在页面顶部解析时,而不是在大括号区域内他们应该是。发生了什么,我该如何解决?作为参考,我指的是body
。
<?php
class Template
{
public $path;
public $ext = '.tpl';
public function __construct()
{
$this->path = dirname(__FILE__) . DIRECTORY_SEPARATOR;
}
public function head($title = '')
{
$title = isset($title) ? $title : 'NEOU CMS';
$replace = array(
"page_title" => $title,
"JQUERY_UI_CSS" => JQUERY_UI_CSS,
"JQUERY_JS" => JQUERY_JS,
"JQUERY_UI_JS" => JQUERY_UI_JS
);
echo self::parse_template('header', $replace);
}
public function body()
{
require('customize.php');
$image = new Images();
$replace = array(
"profile_picture" => $image->profilePic(),
"navigation" => buildNav()
);
echo self::parse_template('body', $replace);
}
public function footer()
{
$replace = array(
"date" => date("Y")
);
echo self::parse_template('footer', $replace);
}
/**
* @param string $filename
* @param array $data
*/
public function parse_template($filename, $data)
{
$out = file_get_contents($this->path . $filename . $this->ext);
if (is_array($data)) {
foreach ($data as $key => $value) {
$out = str_replace('{' . $key . '}', $value, $out);
}
}
return $out;
}
}
?>