我正在尝试为 php 制作一个(非常)基本的模板引擎。根据我的研究,我发现我使用的一种方法非常不受欢迎。我想知道是否有人知道获得相同结果的绝佳替代方案,所以我没有使用它。如果有人看到任何其他可以改进的地方,请分享!
不建议的方法就是eval()
方法!
这是php文件
<?php
class Engine {
private $vars = array();
public function assign($key, $value) {
$this->vars[$key] = $value;
}
public function render($file_name) {
$path = $file_name . '.html';
if (file_exists($path)) {
$content = file_get_contents($path);
foreach ($this->vars as $key => $value) {
$content = preg_replace('/\{' . $key . '\}/', $value, $content);
}
eval(' ?>' . $content . '<?php ');
} else {
exit('<h4>Engine Error</h4>');
}
}
}
?>
这是 index.php 文件
<?php
include_once 'engine.php';
$engine = new Engine;
$engine->assign('username', 'Zach');
$engine->assign('age', 21);
$engine->render('test');
?>
这里只是一个测试html文件来展示它的基本功能
My name is {username} and I am {age} years old!
输出:
My name is Zach and I am 21 years old!
提前谢谢了!