开发过程中经常会遇到一些场景需要后端拼装复杂的字符串,例如:拼装邮件内容,拼装短信内容等,如果直接放在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() 函数实现模板渲染