频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>PHP基础教程>> 收藏此文 | 收藏本站 | 设为首页

php模板和MVC

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2008-6-28 09:59:52 进入讨论组
关 键 词: 模板 这样 程序 一些 php 一个 比如 程序员 逻辑 东西

最近在PHPRES上关于模板的讨论很激烈。这里我总结下自己的看法。
  为什么会有模板?模板本身是为了分离显示逻辑和业务逻辑,让对显示逻辑的修改更加容易。而MVC也同样有这个目的。MVC对降低程序的耦合度,使程序便于修改是很有帮助的。从这个意义上讲,模板是很有用的,这也是多数人的共识。但模板应该是什么样子呢?
  模板有两类,一类是给程序员用的,功能多,但不容易学。这类模板的目的是为了消除显示逻辑中的一些重复的东西,简化开发。一类是给美工或其他非程序员的用户用的,这类模板只表示简单的,与实际环境相关的意义,用于二次开发,或者为了使美工和程序能够独立工作。
  对于第一类模板,我赞同一些人的观点:php本身就是模板。从本质上讲,php语言的目的就是作为模板。但是,如果通过模板程序对php做一些扩展,让模板更加容易使用不是也很好么,不必在抛弃了smarty这样的笨重的东西以后,走向另一个极端。比如,在输出的时候,经常要有一些像
<?php echo str_replace(' ', '&nbsp;', htmlspecialchars($articl-->title)); ?>
这样的东西。如果能用{{$article->title}}代替,不是方便很多么?论坛上有人建议用<?=o($articl-->title)?>这样的方式。这样一方面要有一个o()的全局寒暑,而且这样的一个简短的函数名也不便于理解,会降低程序的可读性。也有人建议在输出前就把变量做完转换。这样一方面每次输出都要做一次,是个很大的麻烦,而且把本该属于View的东西放到了Controller里。有这么一句话,一个工具是否会被使用,在于它是否就在手边。很多网站都会有一些地方没做处理,是程序员不知道字符转换的重要性么?其实,程序员也是人,总会有忘记的时候。在模板程序中提供这样的功能,就不用担心会忘了字符的转换。比如在我现在的尝试中,一个输出文章列表的模板可能会是这样:


<ul>
<?php foreach($articles as $article):?>
<li>{{$article->title}}</li>
<?php endforeach ?>
</ul>
  一方面充分发挥了php语言本身的表达力,又可以省掉一些麻烦。
   另一方面,对于一些常用的功能,比如分页,也可以利用模板程序来简化。既能保持灵活性,又能减少重复劳动。比如可以弄成这样:
<prevpage>上一页</prevpage>
第<pageno />页
<nextpage>下一页</nextpage>

欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱