`
bardo
  • 浏览: 378312 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11807
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10116
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9502
社区版块
存档分类
最新评论

细说PHP模板引擎

    博客分类:
  • PHP
阅读更多
    PHP模板引擎,除官方的Smarty之外,其它开源的模板引擎,不下于成百上千。这是有历史的原因的。
     早期,Smarty早其由于性能上的问题,使得全世界众多的PHP开发者,不得不进一步想弄出更好的模板引擎出来。因为,高并发的高性能要求的大型网站,使用SMARTY,简直就是恶梦。
     到目前为止,PHP模板引擎角然处于春秋战国时代,大量的模板引擎,让衩学者不知所措。从我们国内的基本现状来看,普通公司,对项目要求,必须要使用MVC但其性能要求不高的,基本都是Smarty。因为Smarty作为官方的模板引擎,技术比较普及,找一个程序员也较为方便。国内一些开发框架,也主动集成Smarty。这也造成了,一些官方的模板引擎,在国内得不到普及。
    当然,早期,Smarty虽然那么性能低下,却凭借其提供的Cache争夺了市场。
    近其,我对模板引擎对互联网进行一了些搜索,发现,有官方网站的大概有以下一些:
http://dwoo.org/
http://phpsavant.com/
http://www.twig-project.org/
http://www.templateblocks.com/
http://www.invenzzia.org/en/projects/open-power-libraries/open-power-template
http://www.tinybutstrong.com/
http://www.raintpl.com/
http://www.phpte.com/
http://templatelite.sourceforge.net/
http://www.vivvo.net/vte.php
http://www.phpxtemplate.org/HomePage
http://php-sugar.net/
http://www.feverxl.org/template/
http://www.greaterscope.net/projects/Vemplator
http://phptal.org/
http://quickskin.worxware.com/
http://vlib.clausvb.de/vlibtemplate.php
    不过,这只是其中的一部分,有些可能名不副实。并不是真正的模板引擎。
     从这一现状来看,这是PHP官方一个丰当大的失误。人为地定某一个模板引擎作为官方的东西,作为用来挣钱的工具。但却不是最优秀的,也不是完全利用PHP最强大的优势来解决的方案。
     我们可以从以下几点可以看出:第一,PHP最为强大的是其扩展库。模板原本完全可以用扩展库来解决的,但PHP官方没有这么做。也许,PHP官方,用扩展库,实现了数据库链接池,从而失去了一个挣钱的机会,从而后悔,这也只是一种猜测。
    官方不做,不代表民间无人做,目前,最快的模板引擎:Blitz 模板引擎是一个 PHP 扩展,号称是当前最快的模板引擎。这就是说,它的低层是用C++写成的PHP扩展,而不是PHP源码。具休大家可以参考其网站:
http://alexeyrybak.com/blitz/blitz_en.html
    当然,这是目前唯一发现的一个,其它的均是PHP源码的,不管谁,均说它的速度快,但,有些引擎是不需要测的,一看源码就不想用,100K不到的源码,一堆正则表达式,没有明确提供的模板语言控制结构,函数,过滤器,还说速度快,再愉也没什么大用,更何况,正则越多,性能越低下。不知开发者是如何测试的。
    再有就是,很多代码没有很好的错误与异常管理,可不知,这会让开发者,因为你的错误,而要花去多少他们的不该浪费的时间?
    另外,PHP5现在有DOM,有SPL,国外,有QueryPath实现了对HTML的操作,并由此实现了简单的模板引擎功能,然而,再也没有其它人考虑过,用此技术作出一个良好的模板引擎。这也看出,靠做软件外包的,做项目的,只是应付工作时间内会什么,没有人想到去创造或创新。
    另外,所有模板体系,现在千篇一律师,均是{}模板语言标签。却没有XML命名空间标签。真不知PHP官方是怎样想的,在SF.NET中,SMARTY被称作:Struts for php,但它却没有象struts那样,使用XML命名空间标签。虽说,这能提供更大的灵活性,但是,这却失去了很多原本做JAVA的用户。这可以说是市场策略上的一个相当大的败笔。从历史看,微软为了争JAVA的用户,不惜把VB改得象JAVA,还弄出个C#。但反过来看,Zend Framework中的面向对象的模式,以及象SYMFONY的面向对象的模式,均基本与JAVA等同,完全是用接口类扩展模式。(使用这种模式,使得,框架中不得不多出在堆类文件,并不能够充分发控PHP的特长。)
    此外,象CODEIGNITER干脆就不用模板引擎,而告诉用户,使用PHP的另一种语法模式实现与模板引擎相类似的功能。
    Smarty与Zend Framework作为PHP官方的商业模式,实际上,很多却是阻碍了PHP的良好的发展。
    不过,另外一点则是非常遗憾的,那就是,所有的非官方的模板引擎,至今无一个真正形成气候。其主要原因可能有以下几点:
    早期只是满足于速度改良,一些人因类效率提高了,于是就发布了,不在向其中添加页面Cache,而这却是失去市场的一个主要原因。
    第二个重要原因,那就是,很多开发者,都比较初级,并没有好好了解解Zend之类的大型框架,他们面向的应用开发需求,因而不了解这些需求,更不能应用这些开发思想。
    第三个原因,很多框架,没有很好的文档,使用户无所适从。
    第四个原因,很多框架,只是把源码放到网上,没有建立公司,也没有对应的社区,开源,实际根本上,是需要至少一个方面,或是社区,或是公司,否则,无技术支持,从哪里获得用户?就象现在,我给大家列出的模板引擎,肯定是,有官方网站的,要我选用,我也是选有官方网站的。如果有强大的社区,或公司,那更是我的首选。
    侧如我们去phpclasses.org,或sourceforge.net上去搜索一下,肯定是相当多的。你会感慨,这么多的模板引擎呀!!现在还多出了一个googlecode,上面一样也有很多。很多人以为,放上去就可以了。其实,用户希望的仍是服务。
    第五个原因,那就是,很多开发者,并没有用心去做。有很多框架避然有两年多未更新的,这使得用户无法信任。
    第七个原因,虽然有断方网站,却必须要注册后才下载。我不知这些开发者脑子是不是进水了,如果你的东西确实好,Smarty都不用注册直接下载,而你要注册,不给用户有匿名对你开发的东西拿去与其它进行比较的机会,你如何占领市场?
    第八个原因,那就是,开发者,并不能够足够地从用户角度考虑,要使用模板引擎,则要学习一个新的模板语言,并且相当多的模析语言,并不是简单易学。于是,大家都学Smarty,不如就学Smarty,学了你这个不易学的模板语言,到其它地方,并不一定能用上,浪费时间。
    这方面做得最好的,好象就是symfony template,有5分钟的向导,详细的文档,并且,很工整的面向对象的代码,当然TWIG也是一个不错的模板引擎。DWOO虽说改写了SMARTY,但并不比SMARTY高明多少,只能说是两种不同的风格,或体系。当然,不可否认,DWOO比smarty2肯定快,但现在,相对于smarty3,DWOO又如何了呢?
    模板引擎,或许是PHP永远的一个心结!
   
   
分享到:
评论
6 楼 rtxbc 2011-06-14  
不能指望模版,在模版上,你即使做的再好,也不会给网站带来多大的速度。
很多都是靠硬件,比如服务器集群,缓存如APC,squid缓存.

个人对模版的认识是开发方便,易维护.
5 楼 cana_xu 2011-01-04  
用过smarty的模板引擎和zend,think,yii的视图。
xml+客户端xsl,还行。
4 楼 faiinlove 2010-10-21  
Blitz还是不错的···
文档:http://www.igaom.cn/blitz-template
3 楼 bardo 2010-06-08  
netroby 写道
模板并不是必须的。
但真要用模板也并无不可。
ecshop就用了smarty.性能也还过得去。
当然,最快的还是php原生标签作为模板,因为解析模板多少要消费一些资源。

是的,目前我们有一项目,最终决定取消模板使用了
2 楼 netroby 2010-05-25  
模板并不是必须的。
但真要用模板也并无不可。
ecshop就用了smarty.性能也还过得去。
当然,最快的还是php原生标签作为模板,因为解析模板多少要消费一些资源。
1 楼 netroby 2010-05-25  
文中有错字,建议发上来之前,可以先较正一下,这样看者比较愉悦。也是严谨务实的一种良好的表率

相关推荐

    《细说php》光盘源码

    8. **模板引擎与MVC模式**:书中可能涵盖了如何使用PHP实现简单的模板引擎,以及如何构建基于Model-View-Controller(MVC)设计模式的应用。 9. **PHP扩展与自定义函数**:源码可能会涉及到如何编写PHP扩展或自定义...

    细说php源码

    《细说PHP》是一本由LAMP兄弟连出版的专业PHP技术书籍,其核心目标是深入解析PHP语言的内部机制和实际应用。这本书的配套源码提供了丰富的实例和实践素材,帮助读者更好地理解和学习PHP编程。以下我们将从源码中探讨...

    《细说PHP》配套源码

    《细说PHP》是一本深入浅出的PHP编程教材,旨在帮助读者全面理解PHP语言的原理和实际应用。配套源码提供了书中各个章节实例的完整代码,让学习者能够亲手实践,加深对PHP编程的理解。以下是对这些源码中涉及的知识点...

    《细说PHP》光盘源码.rar

    10. **模板引擎**:为了提高代码可读性和分离业务逻辑,源码中可能包含一些简单的模板引擎实现。 11. **PHP扩展开发**:对于高级用户,源码可能涉及如何编写和使用PHP自定义扩展,以增强PHP的功能。 12. **Web服务...

    《细说PHP》光盘源码

    7. PHP与HTML模板集成:如使用PHP嵌入式语法在HTML中动态生成内容,或者使用PHP模板引擎(如Smarty)来分离业务逻辑和视图层。 8. PHP session与cookie:演示如何使用session和cookie进行用户状态管理,实现简单的...

    《细说php》光盘源代码

    7. PHP模板技术:书中可能涉及PHP与HTML的结合,如Smarty等模板引擎的使用,让读者了解如何将业务逻辑和视图分离,提高代码可维护性。 8. PHP扩展和框架:可能包含一些PHP常用框架(如Laravel、Yii等)的基础知识,...

    《细说PHP》的项目源码

    《细说PHP》是一部深入浅出的PHP编程教程,旨在帮助初学者和进阶者全面理解PHP语言,并通过实际项目加深对PHP应用的掌握。在这个项目中,作者提供了名为BroCMS的源码,这是一个基本的网站内容管理系统,适用于新手...

    细说PHP 源码

    《细说PHP》是高洛峰撰写的一本深入解析PHP编程的书籍,其配套源码提供了丰富的实例和代码示例,旨在帮助读者更好地理解和实践PHP编程。这本书涵盖了PHP的各个方面,从基础语法到高级特性,从函数应用到面向对象编程...

    细说php中的cms项目源码(php开发cms实例参考 )

    4. **模板引擎**:为了提供可定制的外观,CMS使用模板引擎来解析和渲染HTML。开发者需要了解如何编写模板文件,并结合PHP代码来动态生成内容。 5. **URL路由**:良好的URL结构对于SEO和用户体验至关重要。PHP CMS会...

    细说PHP 配套源码

    10. PHP模板引擎:源码可能包含使用PHP模板引擎(如Smarty)的例子,使视图和逻辑分离,提高代码可读性和可维护性。 11. PHP与HTML/JavaScript/CSS集成:了解如何在PHP中生成动态HTML,以及与JavaScript和CSS的交互...

    细说php课后答案

    15. **PHP模板技术Smarty**:Smarty是一个流行的PHP模板引擎,它将逻辑代码和显示模板分离,使代码更易于维护和设计。 以上就是"细说PHP"课程涵盖的主要知识点,通过这些内容的学习,开发者可以全面掌握PHP开发的...

    细说PHP 配套源码 附加章节 项目开发包

    5. PHP模板技术:例如PHP与Smarty、Twig等模板引擎的结合,可以帮助分离业务逻辑和视图层,提高代码可维护性。 6. PHP安全问题:涵盖输入验证、防止SQL注入、XSS攻击防护等,这些都是PHP开发者必须关注的重要话题,...

    php细说17章信息发布系统

    模板引擎如Smarty能让HTML和PHP代码分离,提高代码的可读性和可重用性。MVC(Model-View-Controller)模式则是一种常见的Web应用架构,它将业务逻辑、数据和界面展示分开,有助于团队协作和项目扩展。 在安全性方面...

    细说PHP随书光盘源码,LAMP兄弟连,高洛峰

    通过学习CMS的源码,可以学习到模板引擎、用户权限管理、插件系统、内容发布和管理等高级概念。 7. **面向对象编程**:PHP5引入了完整的面向对象编程特性,包括类、对象、继承、封装、多态等。理解并熟练运用OOP...

    PHP程序设计经典300例(配套资源)

    10. **模板引擎与框架**:在实际开发中,PHP常配合模板引擎(如Smarty)或框架(如Laravel、Symfony)提高开发效率和代码质量。这些工具提供了一种组织代码的方式,使得项目更易于维护和扩展。 11. **Web服务与API*...

    兄弟连PHP视频教程下载地址-18.1.191

    高洛峰讲师以其对PHP的深入理解和实践经验,致力于推动LAMP技术在国内的发展,希望通过这套视频教程培养出更多的PHP开发者,让每个互联网公司都能找到他的学员,每个PHP开发者都能受益于他的《细说PHP》一书。

    php框架解析

    因此,它不仅适用于《细说PHP》的读者和LAMP兄弟连的学员,也适合所有PHP开发爱好者。 #### 二、环境要求 为了确保BroPHP能够正常运行,开发者需要满足以下环境要求: - **操作系统**:支持Linux和Windows服务器...

    brophp2.0技术手册.doc

    内建的SQL查询机制和对Smarty模板引擎的支持,提供了灵活的数据库操作和模板开发。框架还利用memcached进行缓存,提升了性能,而自定义扩展类库和函数则允许无限的功能扩展。 在环境要求上,BroPHP支持Linux和...

Global site tag (gtag.js) - Google Analytics