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

PHP 模板原理以及相关代码展示

Curtis_yang
关注TA
已关注
手记 63
粉丝 62
获赞 1091

mini类
class mini {

public $template_dir = ''; // 模板文件存放的位置
public $compile_dir = ''; // 模板文件编译后存放的位置

public $array = array ();
public function assign($key, $value) {
    $this->array [$key] = $value;
}

/*
 * 调动compile来编译模板,并自动引入;
 */
public function display($template) {
    $comp = $this->compile ( $template );
    include ($comp);
}

/*
 * 传一个参数,读取那个html模板 流程:把模板读取过来,编译成php
 */
public function compile($template) {
    // $template是一个html文件
    $temp = $this->template_dir . '/' . $template;
    $source = file_get_contents ( $temp );
    // 再把编译后的内容保存成.php文件
    $comp = $this->compile_dir . '/' . $template . '.php';
    // 判断模板是否已经存在,或者修改;
    if (file_exists ( $comp ) && filemtime ( $temp ) < filemtime ( $comp )) {
        return $comp;
    }
    $source = str_replace ( '{$', '<?php echo $this->array[\'', $source );
    $source = str_replace ( '}', '\'];?>', $source );
    // echo $source;
    file_put_contents ( $comp, $source );
    return $comp;
}

}

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

热门评论

$source = str_replace ( '{$', '<?php echo $this->array[\'', $source ); 
$source = str_replace ( '}', '\'];?>', $source );

上面两句代码不好,随便写个"}"也被替换了。建议改为:

$source = preg_replace('/\{\$(\w+)\}/', '<?php echo $this->array["\1"];?>', $source);


$source = str_replace ( '{$', '<?php echo $this->array[\'', $source ); 
$source = str_replace ( '}', '\'];?>', $source );

上面两句代码不好,随便写个"}"也被替换了。建议改为:

$source = preg_replace('/\{\$(\w+)\}/', '<?php echo $this->array["\1"];?>', $source);


这个很高大上高大上高大上

查看全部评论