站长论坛

标题: PHP之heredoc模板技术 [打印本页]

作者: superadmin    时间: 2007-10-4 21:59
标题: PHP之heredoc模板技术
php程序界有很多种模板技术和方法;但使用起来大多不太方便。  
我经过思考和测试,发明了一种简单而巧妙的方法。  

我的目标是:把html从php中分离出来,并且html中不包含php控制程序。  

在php4中,提供了print<<< HTML 功能。举例如下:
$data="这里是内容";  
print<<< HTML  
$data  
HTML;  
?>  


输出:这里是内容。  
另外一方面,php中有函数eval()。它能够执行php代码。我们就结合上述  
知识来建立一个通用的函数getTpl().如下:  

下面是demo.php  
<?php  

function getTpl($tplname,$EXT='.htm')  
{
        extract($GLOBALS);
        $path=$tplname.$EXT;
        eval("print<<< EOT\n".readfn($path)."\nEOT;\n");  
}  

function readfn($fn)  
{
        $fp=fopen($fn,"rb");
        return fread($fp,filesize($fn));
        fclose($fp);
}

$title='这是标题';  
$data='这里是内容';  

getTpl('demo');  

?>


下面是demo.htm
<html>  
<head>  
<title> $title </title>  
</head>  

<body>  
<b>$title</b>  
<p>$data  
</body>  
</html>  


经过这样的处理后,在demo.htm中只有php要替换的变量,而没有任何其他php的多余代码了。  
这样以来,外观和程序逻辑就得以完全分离,为网站的修改和后期维护提供了方便之门!  
注:以上方法分离了php和html,代表了显示和逻辑的分离。但是以失去复杂控制为代价的。




欢迎光临 站长论坛 (https://tzlink.com/bbs/) Powered by Discuz! X3.2