php 模板写法
<?php
/* @author: zhuyubing@gmail.com */
class Template {
var $code;
function Template($template) {
$this->code = implode('', @file($template));
}
function assign($name, $var = null) {
if (is_string($name) && is_string($var)) {
$this->code = str_replace('{' . $name . '}', $var, $this->code);
} else if (is_array($var)) {
list($this->code, $tmp, $end) = explode('<!--' . $name . '-->', $this->code);
while (list(, $v) = each($var)) {
$t = $tmp;
$k2 = $v2 = '';
while (list($k2, $v2) = each($v)) {
$t = str_replace('{' . $k2 . '}', $v2, $t);
}
$this->code.= $t;
}
$this->code.= $end;
} else {
while (list($k2, $v2) = each($name)) {
$this->code = str_replace('{' . $k2 . '}', $v2, $this->code);
}
}
}
function display() {
echo $this->code;
}
}
?>最简单的hello_world
准备一个php模版文件hello_world.html
<html>
<head>
<meta http-equiv="Content-Type" c />
<title>{title}</title>
</head>
<body>
<h1>{title}</h1>
</body>
</html>接下来就是模版的翻译工作了
<?php
include ('../include/template.php'); //包含模版核心类文件
$tpl = new Template('hello_world.html'); //参数为模版路径和文件名,可以使用相对路径,也可以使用绝对路径
$tpl->assign('title', "hello world!"); //将标签{title} 替换成hello world
$tpl->display();
?>模版中使用数组
test_array.html
<html>
<body>
<h3>{user} {email}</h3>
<h3>{user1} {email1}</h3>
</body>
</html>模版处理文件
<?php
include ('../include/template.php');
$tpl = new Template('test_array.html');
$user = array(
'user' => 'yubing',
'email' => 'test@sina.com'
);
$tpl->assign($user);
$tpl->assign('user1', 'jack');
$tpl->assign('email1', 'zhuyubing@gmail.com');
$tpl->display();
?>简单的区块处理
block.html
<table width="400" border="1">
<tr>
<td>User Name</td>
<td>E-Mail</td>
</tr>
<!--users-->
<tr>
<td>{name}</td>
<td>{email}</td>
</tr>
<!--users-->
</table>区块处理程序
block.php
<?php
include ('../include/template.php');
$tpl = new Template('block.html');
$users = array(
array(
'name' => 'jack',
'email' => 'test@example.com'
) ,
array(
'name' => 'tom',
'email' => 'tom@sina.com'
)
);
$tpl->assign('users', $users);
$tpl->display();
?>模版包含测试
<html>
<head>
<meta http-equiv="Content-Type" c />
<title>{title}</title>
</head>
<body>
<h1>{title}</h1>
<p>{block}</p>
</body>
</html>模版包含处理程序
<?php
include ('../include/template.php');
$tpl = new Template('block.html');
$users = array(
array(
'name' => 'jack',
'email' => 'test@example.com'
) ,
array(
'name' => 'tom',
'email' => 'zhuyubing@gmail.com'
) ,
);
$tpl->assign('users', $users);
$block = $tpl->code;
$tpl->Template('main.html');
$tpl->assign('block', $block);
$tpl->assign(array(
'title' => '测试多模版文件'
));
$tpl->display();本文地址:http://www.phprm.com/frame/abdcc82200175dafa3073600ffdd3652.html
转载随意,但请附上文章地址:-)