如何使用自定义PHP模板系统

时间:2011-03-26 08:30:58

标签: php

我们正在构建一个应用程序,并希望将html部分与代码(php)部分分开,我们如何使用以下模板文件与php?

<h1>{$heading}</h1>
<p>{$content}</>

PHP代码如下......

<?php
$heading = $row['heading'];
$description = $row['content'];
?>

我们如何包含tpl文件并使用它?感谢。

2 个答案:

答案 0 :(得分:6)

事实上,那是不可用的模板系统。

想象一下,页面上会有20个标题和20个描述吗?要写出来吗?然后HTML改变了,你将不得不改变它20次?这种模板没有任何好处。

事实上,将HTML与PHP 分离没有任何理由。

业务逻辑应与表示逻辑分开,因为您无论如何都必须在模板中使用某些逻辑。 PHP和其他任何模板语言一样好用。

只需将您的代码分为两部分:获取数据部分和显示部分。

让您的常规PHP页面获取所有必需的数据,然后为此数据定义模板,然后调用主站点模板,这将呈现整个页面。

嗯,这是一个这种分离的粗略例子 想象一下,您有links.php页面包含友情网站的链接。此页面应获取所有必需的数据,然后调用模板:

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.tpl.php";
include "main.tpl.php";
?>

其中main.tpl.php是您的主要网站模板,包括常见部分,如页眉,页脚,菜单等:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

links.tpl.php是实际的页面模板:

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

答案 1 :(得分:0)

除非您有充分的理由,否则不应重写经过验证的现有功能。该标记与Smarty非常相似。看看这个:http://www.smarty.net/

如果要重写它,那么您可能需要查看输出缓冲。或者您可以创建自己的视图框架,在其中将变量设置为视图对象,并为您执行所有代码/范围管理ala Zend,CakePHP

相关问题