首页 > php框架 > php 模板写法

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

转载随意,但请附上文章地址:-)

标签:none

发表留言