开发过程中经常会遇到一些场景需要后端拼装复杂的字符串,例如:拼装邮件内容,拼装短信内容等,如果直接放在PHP中拼装代码可读性很差,这是通常会使用类似smarty等模板引擎进行渲染。如果我们系统之前没有导入这些第三方框架也可以使用PHP提供的ob_start()、ob_end_clean()、ob_get_contents() 函数,通过简单的几行代码实现一个简单的模板引擎;

<?php
/**
 * Created by PhpStorm.
 * User: farmer
 * Date: 2018/6/10
 * Time: 23:11
 */
function render($template, $data = array()) {
    $template =  dirname(__DIR__).'/'.$template;
    if (file_exists($template)) {
        extract($data);
        ob_start();
        require($template);
        $output = ob_get_contents();
        ob_end_clean();
        return $output;
    } else {
        echo  "$template not found!";
        exit();
    }
}

没错!就是这么简单的一个function. 入参为模板名称和绑定的数据。

模板内容为一个普通的HTML+PHP混合型文件,$data为模板里需要使用的变量,利用extract() 函数导出$data里的变量;

利用 ob_start()、ob_get_contents()、ob_end_clean() 将php模板渲染的结果输出到字符串变量,从而实现了一个简单的PHP模板引擎,关键不用学习新的模板指令或者标签。

输出:

名称:xiyoufang

网站:www.xiyoufang.com

打赏
PHP巧用extract()、ob_start()、ob_end_clean()、ob_get_contents() 函数实现模板渲染
Tagged on:

发表评论