一个典型的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 项目。
实现关键是:
$$varob_start()优点是PHP自身作为模板语言足够强大。
缺点是PHP自身作为模板语言还是不够简洁,尤其是对于循环语句。
TODO: