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
转载随意,但请附上文章地址:-)