一个典型的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: