`
winphfar
  • 浏览: 47776 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

一个简单实现程序与美工分离的实例

阅读更多

smarty技术最有特色的一点是开启了程序与美工分离的先例,使项目更易与维护和修改。现在很多网站都是采用或者仿照这种技术来实现的,这里有个实例

template.inc.php,代码如下:

 

<?php
class templets
{
	var $filename; /*模板文件*/
	var $content; /*输出内容*/
	/****模板函数,功能是打开模板文件*****/
	function temp( $tplfilename )
	{
		$this->filename = $tplfilename;
		if ( file_exists( $this->filename ) )
		{
			$fd = fopen( $this->filename, "r" );
			$this->content = fread( $fd, filesize( $this->filename ) );
			fclose( $fd );
			if ( strstr( $this->content, "<title>" ) && strstr( $this->content, "</title>" ) )
			{
				if ( !strstr( $this->content, "{site_extion_name}" ) )
				{
					$this->content = "[ ERROR:0 MISS TAG site_extion_name ]";
				}
			}
		}
		else
		{
			$this->content = "[ ERROR:1 THE TEMP FILE IS NOT EXISTS ]";
		}
	}

	function gettemp( $tempcontent )
	{
		$this->content = $tempcontent;
	}
	/****标签注册 把key的值换成value******/
	function assign( $key, $value )
	{
		$this->content = str_replace( "{".$key."}", $value, $this->content );
	}
	/**模块标签注册**/
	function blockassign( $block_name, $values )
	{
		if ( is_array( $values ) )
		{
			ereg( "{".$block_name."}.*{/".$block_name."}", $this->content, $regs );
			$str_block = substr( $regs[0], 2 + strlen( $block_name ), 0 - ( strlen( $block_name ) + 3 ) );
			$str_replace = "";
			$block_replace = "";
			foreach ( $values as $subarr )
			{
				$str_replace = $str_block;
				while ( list( $key, $val ) = key )
				{
					$str_replace = str_replace( "{".$key."}", $val, $str_replace );
				}
				$block_replace .= $str_replace;
			}
			$this->content = ereg_replace( "{".$block_name."}.*{/".$block_name."}", $block_replace, $this->content );
		}
		else
		{
				$this->content = ereg_replace( "{".$block_name."}.*{/".$block_name."}", "", $this->content );
		}
	}
	/*输出替换后的页面*/
	function show( )
	{
		return $this->content;
	}

}

?>

 

 标签是以“{”开始,以“}”结束的。

 

先创建模板文件template.htm

 

<html>
<head>
<title>{title}</title>
</head>
<body>
{example}
{tempfields}
{field1}
{feild2}
{/tempfields}
</body>
</html>

 

 

实现代码

 

<?
include("template.inc.php")

$temp= new templates();

$title = "test example";

$example = "<h1>example1</h1>";

$field1 = "test field1"

$field2 = "test field2"

$tempfields[] = array(
        "field1" => $field1,
        "field2" => $field2
);


$temp->temp("template.htm");

$temp->assign("title",$title);

$temp->assign("example",$example);

$temp-assignblock("tempfields",$tempfields);

$temp->show();

?>

 

1
0
分享到:
评论
1 楼 achun 2010-01-20  
做做广告
推荐LZ看看我的jCT专题
一个运行在浏览器端的前台模板引擎,要说前台模板和后台有何大不同
其中一条就是
前台模板运行在浏览器中,可以操作DOM,
比如这样的结构
<input id="pw" value="$val"/>
如果$val中有",>之类的,无疑在数据存储或者后台模板装配阶段都要进行字符转换,可前台模板可能不需要因为在运行期
直接的
$('#pw').val($val);
当然这个$val如何传递给前台是另外一回事了

相关推荐

    Freemarker入门实例

    在上述的Freemarker入门实例中,我们看到一个简单的`product.ftl`模板文件,其中包含HTML结构以及`${...}`包围的Freemarker表达式。这些表达式在运行时会被对应的数据模型中的值替换。例如,`${user}`和`${...

    JavaEE开发的图书管理系统,美工界面做的很酷,适合新手学习使用,JAVAEE期末实训作业.zip

    "JavaEE开发的图书管理系统"是一个全面展示JavaEE开发技术的实例,对于想要学习JavaEE的新手来说,这是一个很好的起点。通过分析和实践这个项目,不仅可以提升编程技能,还能对整个Web应用开发流程有一个更深入的...

    Smarty实例教程

    Smarty是一个流行的PHP模板引擎,它的主要目标是实现程序员和美工之间的工作分离,从而提高开发效率和维护性。在多人协作的项目中,这种分离尤其重要,因为它允许程序员专注于业务逻辑,而设计师可以自由地设计和...

    Smarty是一个使用PHP写出来的模板

    通过这种方式,可以实现程序员与美工人员工作的独立性,即当程序员更改程序逻辑时不会影响到美工设计的界面;同样地,美工人员修改界面设计也不会影响到程序逻辑,这对于多人协作的项目来说尤其重要。 #### 二、为...

    北大青鸟的jsp自定义标签

    自定义标签使得程序逻辑与表现形式得以分离,提高了代码的可读性和可维护性。 自定义标签主要分为以下几类: 1. 没有标签体的标签,例如 ` `,这类标签没有内容,仅用于插入特定的行为。 2. 有属性但无标签体的...

    三層架構實例

    在IT领域,"三層架構"是一种常见的软件设计模式,它将应用程序分为三个主要部分,以实现更好的模块化、可维护性和可扩展性。这里我们主要讨论的是C/S(客户端/服务器)程序设计中的三層架構,尽管这种架构也适用于B/...

    CSS与DHTML精髓第2版

    《CSS与DHTML精髓第2版》是一本深入探讨网页设计技术的专业书籍,主要涵盖了CSS(层叠样式表)和DHTML(动态超文本标记语言)两大核心领域。这本书是针对那些希望提升网页设计和开发技能的读者而编写的,无论你是...

    图书管理系统.rar

    总的来说,这个图书管理系统项目是一个基础的Java Web应用实例,适合初学者学习和理解MVC模式、JSP和Servlet技术,以及如何构建简单的数据库交互。通过完善和优化,它可以成为一个功能完善的图书管理工具,满足实际...

    【易语言】开源-图标提取工具

    它基于易语言编程环境开发,提供了一种简单高效的方式来获取应用程序内部的图标资源,这对于软件开发者、美工或者需要图标素材的人来说非常方便。 易语言是一种面向对象的、以中文为编程语句的编程语言,旨在降低...

    Smarty入门教程

    Smarty是一款基于PHP的高性能模板引擎,其核心设计理念在于实现逻辑与表现层的完全分离。这种分离机制旨在简化团队协作,确保前端设计师和后端开发者的工作独立而不干扰彼此。具体而言,这意味着: - **程序员**...

    ASP.NET的网页代码模型及生命周期

    代码分离有一种好处,就是在.aspx页面中,开发人员可以将页面直接作为样式来设计,即美工人员也可以设计.aspx页面,而.cs文件由程序员来完成事务处理。同时,将ASP.NET中的页面样式代码和逻辑处理代码分离能够让维护...

    phpsmart模板技术入门教程.doc

    Smarty是一款使用PHP编写的模板引擎,它的主要目的是实现程序逻辑与界面设计的分离,使得程序员和美工能够各自独立工作,避免相互影响。这个技术对于大型项目尤其有用,因为它提高了开发效率并简化了维护。 Smarty...

Global site tag (gtag.js) - Google Analytics