一个纯PHP的网页模板实现

风行水上 @ 2014-05-30 18:32:05
标签:

一个典型的Smarty模板大致如下

{extends 'parent.tpl'}

{block 'title'}Page Title{/block}

{block 'body'}
Body Content
{/block}

PHP语言本身就是一个模板语言。如何用PHP语言自身实现就表类似于上面的模板呢?

AppSolo-php用了下面的方法实现

<? AppView::extend('parent.tpl.php'); ?>

This Content Will NOT be Output.

<? AppView::block('main') ?>
<h1><?= $title?></h1>
<p><?= $author?></p>
<div>
  <?= $body?>
</div>
<? AppView::block('/main') ?>

其中AppView类的基础代码在70行左右,具体实现可以参考 AppSolo-php 项目

实现关键是:

  • 动态变量 $$var
  • 内存缓冲 ob_start()

优点是PHP自身作为模板语言足够强大。

缺点是PHP自身作为模板语言还是不够简洁,尤其是对于循环语句。

下一步

TODO:

  • 动态变量的效率研究
  • 模板转换(自定义模板语法并进行自动转换)???
标签:

分享到:
comments powered by Disqus

25/28ms