喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 20  1/2  1  2  > 
     
标题: [原创] 解脱开发负担的模板Ease Template  
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
解脱开发负担的模板Ease Template

使用手册:Ease Template Manual


  模板目前的种类繁多,由于每种模板针对方向不同,大致分为:
  一、编译执行(执行效率高),需要配置Cache目录操作相对麻烦,CPU资源占用相对较少。
  二、直接调用(开发方便),无需配置Cache目录即可执行程序,如果算法好可以减少资源占用。

  本模板采用简单的语法可以让用户在最少时间内掌握并且熟练应用,为了更广阔的应用本模板同时支持编译执行与调用型两种引擎,并且保证了最简洁的算法以及程序结构简单的原理,对比同等模板程序代码将更少,模板内的变量以及语句更清晰,采用先进的连载结构改进模板运算速度,能够在同样的运算下拥有更好的分离程度,针对模板的安全性也有独特的处理方法,即使被黑客了解了结构或是Cache目录运算方法也无法通过Cache文件得到程序有关信息。

    模板应用与结构,以往的开发流程如下:
  美工设计-》程序套用模板-》开发结束。
  但是如果存在修改流程如下:
  美工修改设计-》程序修改模板套用程序-》修改结束。

  采用Ease Template之后将有一些区别性的变化,开发流程如下:
  程序员开发程序与简单模板-》程序测试-》开发结束。
  美工设计-》模板人员(Dreamweaver)-》程序结束。
  修改流程如下:
  美工修改设计-》模板人员修改设计-》修改结束。
  程序员完全释放出来做别的开发

  请注意采用Ease Template之后程序结构开发合理配合调试平台模板人员自己就可以完成程序页面的修改,此举动将大大的减轻程序员的负担(不过根据修改情况偶尔会有小小的程序改动<=5%)。

  当然您一定会提问为什么不使用Smarty或是PHPLIB都可以,理由就是Smarty虽然很庞大,但是真正应用的功能无非就是一小部分所以大部分资源属于浪费,PHPLIB由于运算方法的造成在大量循环的情况下浪费很多资源,尤其制作嵌套循环将更加麻烦,在这些问题的对比下Ease Template将提供更简单更高效的方法,甚至可以将数据库运用方法直接写入模板中,这样将无须复杂的数组转换操作。

  对于任何一套模板来说都没有提供商业化发展的思路,例如说一个小公司开发出一套程序,又担心合作方拿到程序将终止合作,此问题在Ease Template中可以抛开此问题,由于可以提供分离状态,当程序开发完就可以将程序发给合作方,但是可以不提供template程序可以继续运行,如果合作方修改将造成非常复杂的现象而且容易造成无法更改以及页面出错,但是开发者则不需要那么复杂,直接按正常流程即可完成所要修改的工作,商业版本的程序如果没有template而且要修改页面对于程序员都将是很复杂的修改工作,Ease Template为商业化提供了良好的支持。

    Ease Template为了弥补函数过少造成用户不知道如何使用的时候可以使用{run:}echo time(){/run},这样就可以调用time()的函数,增加后将可以完全支持系统的所有函数包括用户自己写的函数也可以使用,所以将不存在功能不足的问题,有时候处理很麻烦的事情变的更简单。



1.模板基础应用

调用方法

<?
include("./template.php");                //引用类文件

$tl    = new template(
           array(
              'CacheDir'=>'cache',
              'TemplateDir'=>'template',
              'TplType'=>'htm'
           )
        );                        //声明类
?>
test_1.php

<?
include("./template.php");                //引用类文件

$tl    = new template();                //声明类

$tl->set_file('test_1');
$tl->p();
?>
2.简单变量应用

test_1.htm

这是一个简单的<font color="{color}">{test}</font>.
test_1.php

<?
include("./template.php");

$tl    = new template();

$test  = '测试';

$color = 'red';

$tl->set_file('test_1');
$tl->p();
?>
[ 本帖最后由 md-chinese 于 2006-12-21 11:39 AM 编辑 ]
2006-12-21 11:30 AM#1
查看资料  发短消息  顶部
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
[推荐阅读] 北京民众集团招聘php程序员和系统工程师
3.模板路径设置
图片会自动转换无须设置

test_2.htm

显示结果:<br>
<img border="0" src="images/banner_3.gif" width="590" height="80">
test_2.php

<?
include("./template.php");

$tl = new template();

$tl->set_file('test_2');
$tl->p();
?>
4.模板条件判断

test_3.htm

<!-- IF[$a==1] -->
变量a为{a}
<!-- ELSE -->
变量a为空
<!-- END -->

<!-- IF[$a==$b] -->
变量a等于变量b
<!-- ELSEIF[$a>$b] -->
变量a大于变量b
<!-- ELSE -->
变量a小于变量b
<!-- END -->
test_3.php

<?
include("./template.php");
$tl = new template();

$a = 1;
$b = 2;

$tl->set_file('test_3');
$tl->p();
?>
5.循环处理方式

注释说明
此效果将数组信息快速处理显示,用法跟foreach()一样。

test_4.htm

<!-- $user_list AS $user -->
  账号:{user['name']}<br>
  密码:{user['pass']}<br><br>
<!-- END -->
test_4.php

<?
include("./template.php");
$tl = new template();

$user_list = array(
    array(
        'name'    => 'md-chinese',
        'pass'    => '654321',
    ),
    array(
        'name'    => 'test',
        'pass'    => '123456',
    )
);

$tl->set_file('test_4');
$tl->p();
?>
嵌套循环方式:

test_5_1.htm

<table border="1" width="300" bordercolor="#C0C0C0">
<!-- $cate AS $ck=>$cv -->
<tr>
<td><b>{cv}</b></td>
</tr>
<!-- $subcate[$ck] AS $K=>$V -->
<tr>
<td>&nbsp;&nbsp;->{V}</td>
</tr>
<!-- END -->
<!-- END -->
test_5_1.php

<?
include("./template.php");
$tl = new template();

$cate = array('分类1','分类2','分类3');
$subcate = array(array('计算机','报纸','杂志','鼠标'),array('青菜','白菜'),array('橘子','香蕉','苹果'));

$tl->set_file('test_5_1');
$tl->p();
?>
2006-12-21 11:35 AM#2
查看资料  发短消息  顶部
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
[推荐阅读] 为什么显示没定义Zend_Config_Ini::load()
换行颜色改变

注释说明
此效果将表格每行颜色自动变换,只要在单元格的背景色的 bgcolor="{color:#dcdcdc:#ffffff}"
语句解释:{color:颜色1,颜色2}
两个颜色之间用逗号分割。

test_7.htm

<table border="1" width="100%" bordercolor="#808080" style="border-collapse: collapse">
  <!-- $lists AS $k=>$v -->
  <tr>
      <td bgcolor="{color:#dcdcdc,#ffffff}">{i}{v}</td>
  </tr>
  <!-- END -->
</table>
test_7.php

<?
include("./template.php");
$tl = new template();

$lists = array('香蕉','茄子','白菜','龙虾','老虎','猎人','飞机','宇宙');

$tl->set_file('test_7');
$tl->p();
?>
模板功能弥补
注释说明
由于Ease Template内部功能很少,无法实现所有的网络操作功能,为了弥补功能不足增加了特别的函数{run:}PHP 程序{/run},此功能可以将函数、变量、条件判断都可以写入其中完成编译。

test_9.htm

时间处理:{run:}echo date('Y/m/d H:i',time()){/run}
<br>
条件判断{run:}=($a==1)?'成立':'失败';{/run}
test_9.php

<?
include("./template.php");
$tl = new template();

//条件判断
$a = 1;

$tl->set_file('test_9');
$tl->p();
?>
2006-12-21 11:42 AM#3
查看资料  发短消息  顶部
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
[推荐阅读] CVSNT 配置问题
模板调试平台

释说明
由于调用模板过多会造成估算或是资源浪费,或是无法进行快速查找调试,为了方便开发,提供快速的调试功能。

<?
include("./template.php");
$tl = new template();

//连载头部
$tl->set_file('test_head');
$tl->p();

//连载首页
$tl->set_file('test_index');
$tl->p();

//连载页脚
$tl->set_file('test_foot');
$tl->p();

//调试系统
$tl->inc_list();

?>
此调试平台将大大方便开发效率,对于美工的分离起到非常的好处
而且模板的语法非常少而且种类也很少,所以对于美工的适应来说会非常快
2006-12-21 11:44 AM#4
查看资料  发短消息  顶部
 
努力奋斗
新手上路
Rank: 1



UID 70119
精华 0
积分 23
帖子 44
金钱 23 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-22
状态 离线
[推荐阅读] 关于mysql sleep进程!
很多地方设计模式真是不敢恭维.
<!-- IF[$a==1] -->
if写成这种形式是为了方便美工?
判断和循环结尾标志符都用<!-- END -->?
{run:}echo time(){/run}对于美工有什么意义?叫他们写PHP吗?
语法少代表美工适应快,就代表解脱开发负担?
2006-12-22 12:14 AM#5
查看资料  发短消息  顶部
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
[推荐阅读] 北京盛世阳光招聘PHP程序员
首先
<!-- IF[$a==1] -->
这样的方法是放在模板里不影响设计在制作HTM代码的时候被特别代码破坏了表格的结构
<!-- END -->
通用这个主要是减少运算

{run:}echo time(){/run}
这个只是提供了一个方法,很多模板都有类似的做法

手册上有写到不是要求你去用,只有在不方便的情况下来减轻负担而以,程序是死的人是活的

如果按楼上的说法SMARTY等那些开发模板的都不要去做了,大家一起来争吵电脑是要开机还是关机好了

对于这个模板是经过大量开发经验的结果,如果你是一个人从设计开发全包了的话,我觉得怎么写都可以

你一个人在强也不可能超越团队开发.
2006-12-22 01:30 AM#6
查看资料  发短消息  顶部
 
努力奋斗
新手上路
Rank: 1



UID 70119
精华 0
积分 23
帖子 44
金钱 23 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-22
状态 离线
[推荐阅读] Zend_Filter::isEmail
IF[$a==1]  用[]显得不伦不类,为什么不用()?

<!--END--> 明显对于逻辑是不合理的
for
....
if
...
end
....
end
别人会认为哪个end属于哪个if或者for呢?

{run}倒还好说。

其实没什么,只是提点意见,别介意。
2006-12-22 09:10 AM#7
查看资料  发短消息  顶部
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
[推荐阅读] 全国各地的女生是怎么骂男生?
其实是这样的,
IF本身就是跟系统用法一样的,只是为了区分别人这个是用在模斑上的而不是写在PHP中的
如果<!-- IF($a==1) --> 也许骂的人比现在这个还多,原因就是如果这样写了还不如写成PHP的<?if($a==1){?>
而且还可以节省几个字符
你说END 不符合逻辑,实际上我是为了减少过多的方法,例如<!-- IF[$a==1] -->...<!-- [/IF]  -->
<!-- [FOR ] -->...<!-- [/FOR] -->
这样你觉得很好,但是我们测试在美工方面得到的答案是混乱

我们公司几个部门都是程序完了以后美工直接制作,我们无须干预,由于我们公司设计修改比较多,如果每次都是我们修改似乎太复杂了

而且我现在这个可以在相同效率下支持编译与不编译引擎

还有不知道你是否注意到,除了FUNCTION内的以外,基本不要去设置变量,全是自动完成比起SMARTY设置变量是否要方便些,但是你肯定会说安全,至于安全问题,我觉得与模板关系不大,还有缓存出的文件都做了保密处理,目前除非写的有问题,安全问题并不大

在实际应用中我们得到的结果是效率相对其他的要高很多,只是和你讨论
2006-12-22 09:46 AM#8
查看资料  发短消息  顶部
 
millken
高级会员
Rank: 4


UID 73040
精华 0
积分 737
帖子 481
金钱 737 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-5-9
来自 REFERER
状态 在线
[推荐阅读] 哪有工具把汉字转换成&#25163 ;这个样子的啊
摸板不错,我在用,不过里面的图片检测是不是多此一举呢?
如:<img src="/aaa/aa.gif">会被无故解释成<img src="/template/aaa/aa.gif">
其实很多功能都不需要,如debug,只会增加文件的大小,希望摸板大小能控制在20k以内(discuz的摸板就不错),

多摸板和多国语言功能这个是有必要的。




Blogger 免费搭建的个人BLOG
2006-12-24 10:14 AM#9
查看资料  Blog  发短消息  顶部
 
md-chinese (md-chinese)
注册会员
Rank: 2
中级会员



UID 18809
精华 0
积分 149
帖子 146
金钱 149 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-3-10
状态 离线
[推荐阅读] 我才写的一个网站,希望大家能给我一个点评


QUOTE:
原帖由 millken 于 2006-12-24 10:14 AM 发表
摸板不错,我在用,不过里面的图片检测是不是多此一举呢?
如:<img src="/aaa/aa.gif">会被无故解释成<img src="/template/aaa/aa.gif">
其实很多功能都不需要,如debug,只 ...
这位仁兄,非常谢谢你的支持,不过你好像说错了

首先我这个支持图片监测是对的但是你给的有错误
模板会解析
images/这样后面的图片目录而你给的这个是不会被解析的,以后版本会增加更多功能支持
如:<img src="/aaa/aa.gif">会被无故解释成<img src="/template/aaa/aa.gif">

但是DEBUG这个是针对开发程序与设计的,所以这个我认为很需要,而且我们公司应用了这个没有美工设计会很复杂,不知道到底修改什么页面,
例如你制作个index.php这个程序里面可能用到很多页面,例如head.htm index.htm list.htm foot.htm等,如果没有DEBUG把网站给美工去修改有如何下手

您说"希望摸板大小能控制在20k以内"
最新的模板也只有14KB不到,似乎离20KB还有一定距离


多摸板和多国语言功能这个是有必要的

哈哈,这个我随后的版本会增加,谢谢提醒

[ 本帖最后由 md-chinese 于 2006-12-25 02:13 AM 编辑 ]
2006-12-25 02:12 AM#10
查看资料  发短消息  顶部
 20  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.031388 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP