PHP 模板高级篇总结


Posted in PHP onDecember 21, 2006

如何使用PHP来快速地编写代码,模版似乎成了唯一的选择。但是一个PHPer最终应该坚持使用模版,放弃模版,还是使用自己的模版?

    以下想法是属于所有PHPer的想法:

    “模板这东西,其实最重要的是适合自己的项目需求,而不是适合自己的习惯.比如一个企业的宣传网站,访问量不大,更新量也不大,用什么都一样,甚至不用,直接PHP+HTML写可能速度最快.也没什么不可.但是如果是一个新闻系统,或者是内容发布系统.两者这样,就非常有必要用到模板这一技术.因为他们都有一个共通的地方,就是有一类页面要用到同一个样式的页面设计.而根据实际情况,比如访问量的大小,项目的紧急程度以及程序员对于模板技术的熟练程度,选择最适合项目的模板技术..这才是首选。”[来自leslee]

    “从开始学习php就开始接触模板,我用的是smarty模板引擎(官方支持,功能强大),使用时间越长越发觉得模板是个好东西。只要要涉及到页面显示的东西,我的都会用模板去写,如果不用模板写程序总觉得别扭。我想其他的phper也会有相同的感觉,因为模板设计的初衷是将代码和页面分离出来分别处理,毕竟谁也不愿意一边写代码,一边处理页面。”

    “有人说SMARTY已经很好了,但也有人说SUPERTPL更好,也有人更中意于PHPLIB我认为每个模板都有自己优点,也有自己的不组,关键看你的项目需要什么,用什么最好!”[来自feifengxlq]“用模板肯定是没有错的最初使用的是PHPLIB,使用过了一段时间后,感觉太简单了,每个模板变量都要写代码去替换,每引用一个模板也得写一行代码(也许PHPLIB有批量处理功能,我太菜不知道)因而放弃了,后来用plog建站的时候接触到了smarty,感觉smarty过于庞大,确实能加快开发进度,但是很多功能实际都用不上,因此,最后还是自己写了模板引擎,要模板实现的功能很简单,就是一个模板变量的替换功能,再加上include其他模板和foreach块操作功能。”

    “我还是用PHPLIB,不过,我会按自已的经验与需要,写一些函数或类来封装最常用的一些针对模板输出的处理。”[来自seraph]“我使用自己的模板,还要写模板解析代码,累呀。我选择使用现有优秀的模板。”[来自Bantu]“偶在别的论坛上看见一些很厉害的人不用模板...可能是没到那种境界...个人感觉还是使用模板的好..至少可以分工..加快开发速度。使用自己的模板? 感觉没有必要哈...用现成的就行了..在现成的基础上加上一些自己学要的实际功能。”[来自Phzzy]“我不使用模板引擎,但我也是使用模板,只是跟你们的不一样。因为模板引擎太慢了感觉不好用。”

    “我用第三方的,最好是开源的。至于用哪个,看个人的爱好吧。”[来自leeyupeng]“我还是倾向于使用自己的模板简单实用。”[来自夕日]“由于考虑到性能,我一般不使用通用的模板,会根据实际情况做一些取舍,具有一定的局限性。”[来自Ben]“根据需要来决定使不使用模板,以及使用什么模板。灵活一点总是没有坏处的。”[来自xlmo]“个人喜欢简单快速的模板,可以考虑用现成的模板,不过一般会根据实际项目优化一下,把里面用不到的一些功能删除等。”

    “使用模板一般倒不会导致瓶颈,至于会影响点效率主要这么几点:

    1、程序和模板分离后,一个文件就变成两个或者多个了,那读取模板这个IO也是要点时间的
    2、解析模板相对是比较复杂的,一般都需要N个 preg_match,preg_replace之类函数来处理或者替换
    3、模板的载入和替换工作明显需要比不使用模板占用更多的内存

    所以提高效率注意以下几点:

    1、模板解析程序选用支持编译和缓存的,这个对性能好处是最明显,看自己怎么灵活应用了
    2、解析程序尽量简单,什么功能都放进去那用起来是方便了,性能也差了
    3、做html的模板页面时候也是遵从简单的原则,比如按xhtml标准做,尽量不要把一个页面拆成很多个模板然后再include。”

    “如果使用模版的话,我觉得有能力还是自己写一个好。这也是锻炼。不过要用我觉得小强很好。可以在可视化下编辑。”[来自jejwe]“我个人也认为模板文件的可视化编辑性非常重要。不能要求模板页面的制作也要有相当程序开发基础的。”[来自seraph]“具体问题具体分析,模板使用与否,选择已经成型的优秀模板类还是自己去写,一切都是根据具体的项目开发而言的,不能死求哪一个的。”[来自Deepseath]“感觉现有的那些模版不够完善,要么功能少,要么速度慢,还是自己做的好。”

    “总结,PHP模板可以让你的代码脉络更加清晰,结构更加合理化。但是,PHP模板的发展总是会比PHP应用的迅速发展缓慢许多,在这种情况下,反而会影响到PHP应用的开发。对于每一个PHPer来说,没有一个PHP模板对他是最合适、最完美的。因为所谓的PHP模板就是大众化的东西,并不是针对个人的。所以,如果能在对PHP特点、应用有清楚的认识的基础上充分认识到模板的优劣势和该PHP应用原理,PHPer就能得到自己需要的适合自己开发风格的PHP模板。这也是PHP最重要的思想之一,PHP提供的只是方法、途径,而不是最终解决方案。所以模板和PHP应用、产品一样都可以改造为自己的PHP模板。因为这里面寄托着创造者的思想。

    限于各种不同的条件限制,比如时间、经验,所以大家可能认为做一个自己的PHP模板是非常困难。其实,你需要的不是重新构造一个PHP模板,而是选择一个最贴近自己的PHP模板加以改造。因为PHP需要继承、创新。当然,做一个自己的PHP模板一步一步地实现,并及时融入最新的思想和理念。个人PHPer可以从细节做起,从自己最需要的地方、自己的开发习惯做起。PHPer团队可以分工协作进行PHP模板本地化,尤其对于公司而言尤为实用。就算你只是修改了PHP模板里面的一个符号,仅仅是一个符号也能说明你对它加以了改造,它就是属于你的。最重要的是,属于自己的PHP模板永远不是固定不变的,它将伴随你一直成长,也会成为你的PHP历程的见证。

    PHP不需要非常精通的语法;PHP不需要你自己去开发众多的库;PHP不需要你去为性能、稳定性等语言自身的特性而担心。PHP需要的是你的逻辑;PHP需要的是你的创造力;PHP需要的是你的思想!”

PHP 相关文章推荐
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
php发送邮件的问题详解
Jun 22 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
Laravel实现表单提交
May 07 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 PHP
PHP函数utf8转gb2312编码
Dec 21 #PHP
小偷PHP+Html+缓存
Dec 20 #PHP
PR值查询 | PageRank 查询
Dec 20 #PHP
转PHP手册及PHP编程标准
Dec 17 #PHP
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 #PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 #PHP
PHP读MYSQL中文乱码的解决方法
Dec 17 #PHP
You might like
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
php中switch语句用法详解
2015/08/17 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
javascript 函数式编程
2007/08/16 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
python实现猜数字游戏
2020/03/25 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
《阳光》教学反思
2014/02/23 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
教室布置标语
2014/06/26 职场文书
公司员工离职证明书
2014/10/04 职场文书
2014年审计工作总结
2014/11/17 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
教师节晚会主持词
2015/06/30 职场文书
心理健康教育主题班会
2015/08/13 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL