继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

自定义简单的PHP模版引擎

扬帆大鱼
关注TA
已关注
手记 65
粉丝 13
获赞 50

定义文件:

    1. 创建目录文件tpl

    2. 创建模版处理文件tpl/Template.php

    3. 显示处理页面 tpl/index.php

    4. 创建模版文件 tpl/index.html

    5. 编译目录文件 tpl/compile


tpl/Template.php源代码

<?php
class Template {
 
    // 模版中的变量
    protected $tplVals = array();
 
    // 编译文件路径
    protected $compileFile = './compile/';
 
    // 编译文件扩展名
    private $compileExtendName = '.php';
 
    // 模版文件扩展名
    private $tplExtendName = '.html';
 
    public function __construct(){}
 
    /**
     * 替换模版文件中的变量
     * @param  array $data 模版文件的内容
     * @return  string $data 替换模版文件的内容
     */
    private function replaceTplVar($data){
        foreach($this->tplVals as $k=>$v) {
            $data = str_replace('{$'.$k.'}', $v, $data);
        }
        return $data;
    }
 
    /**
     * 显示模版
     * @param  unkown $tpl
     */
    public function display($tpl) {
        // 获取模版内容
        $content = file_get_contents($tpl.$this->tplExtendName);
         
        // 替换模版中的变量
        $content = $this->replaceTplVar($content);
 
 
        // 编译后的文件
        $compileFile = $this->compileFile.md5($tpl).$this->compileExtendName;
         
        // 给编译后的文件添加内容
        file_put_contents($compileFile, $content);
         
        // 引入编译文件
        require_once $compileFile;
         
    }
 
 
    /**
     * 模版变量绑定
     * @param  string $name  模版变量名
     * @param  string $value 模版变量值
     * @return null
     */
    public function assign($name, $value) {
        $this->tplVals[$name] = $value;
    }
}


tpl/index.php源代码

<?php
require_once './template.php';
 
$tpl = new Template();
$tpl->assign('title','自定义smart有模版引擎');
$tpl->assign('content','这是模本内容');
$tpl->display('index');

 tpl/index.html源代码

<!doctype html>
<html>
<head>
<title>欢迎大家来零壹码学习自定义模版引擎</title>
<meta charset="utf-8" />   
</head>
<body>
    <h1>{$title}</h1>
    <p>{$content}</p>
</body>
</html>

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP