phpzend:从Zend Engine 2.0的设计蓝图看PHP的将来




  些杂谈
  首先是本文写作初衷我拿到有关Zend Engine 2.0设计蓝图文档已经有段时间了(现在大家也可以去参考资料中地址回来看看)看完的后就有了写篇评论冲动--根据文档描述下PHP将是种更符合现有面向对象开发习惯语言至少是被更多赋予了面向对象特性但是随的带来问题就是对于PHP这样个以Web快速开发为目标语言是否值得将自己修饰得面面俱到?这个问题看来是需要些评论文章来讨论我也很愿意提出自己观点但是后来些繁忙事情就将这个冲动点点又打回了肚里直到最近段时间又想起于是再拜读几遍设计蓝图文档遂有此文(刚拿到这份英文文档时候我还有将这份设计蓝图文档翻译到中文打算但是考虑到是并非最终蓝图 2是大家都应该培养直接阅读原文习惯 3是翻译总是不可避免会带来些晦涩地方于是暂时作罢不过写成此文时候还是决定"冒险"翻译不能准确达意的处还请各位不吝指正)
  
  其次是对本文讨论焦点解释--在这篇评论中我将主要针对将来PHP中得以大大加强面向对象特性进行评述如果你是PHP开发者那么我猜想你应该了解些PHP语言中面向对象特性;但是由于般PHP用于"极端快速开发环境"(这是我自己生造出个词语表示进行些以客户为导向网站WebSite开发情况特点就是工期非常短且客户要求不甚明确)所以真正大量使用其对象特性开发者以及开发项目并不是很多;另外现有PHP对象模型相对C弱势也限制了这方面特性使用不过在PHP将来版本中修改重点就在于语言中面向对象模型完善现有版本中许多不良特性并加入其他特性因此讨论PHP未来面貌就集中在讨论PHP面向对象特性方面
  
  好了让我们步入正题看看Zend Engine 2.0新特性
  
  归纳Zend Engine 2.0设计蓝图(草稿)
  从设计蓝图(草稿)中可以非常清楚看出下代Zend Engine是以新面向对象模型为基础如果你曾经使用过现有PHP 4面向对象特性那么也许会在找到点点或者C感觉同时觉得有些别扭--不但是在面向对象语法匮乏上而且有时会得到意想不到运行结果--这切都是在现有支持PHP 4Zend Engine 1.0中不那么优雅面向对象模型造成
  
  简单说来Zend Engine将向Java靠拢大量借鉴其面向对象模式从改进特性类型来看应该可以分为 3类:第类是对现有面向对象模型改进和加强其中包括对构建器和析构器定义增加私有成员变量、静态成员变量、多重继承、过载等面向对象特性;第 2类是对于控制流程修改和增删比如增加了形如try/catch/throw违例处理机制;第 3类是有关修改和增删比如对于串偏移量增加(对于每类改进详细情况可以查阅参考资料中所列文档)由此可以看出通过第类和第 2类改进PHP正在逐步将自己改良成种具有面向对象特征语言
  
  不过问题恰恰就产生于此:
  从积极方面来说如今编程世界中更加欢迎具有面向对象特征语言(即使语言本身并不构建于面向对象基础的上也可以通过增加定义对象等手段使得该语言不至于落在潮流的后)--从这意义上说Zend Engine 2.0使得PHP对面向对象支持将从现在试探性接触转变为将来全面拥护看来更加符合编程语言发展潮流;另外在构建企业级应用(这也是PHP现在经常被人指责的处)的时采用面向对象思路方法建模和实现已经是事实上标准而PHP改进也许会迎合这需要解决语言自身在这方面薄弱的处
  从消极方面来说为开发者奉献个更加类似Java新版PHP似乎没有什么意义PHP被广泛应用原因除了源码公开和跨平台等的外适应站构建简单、快速web编程特点恐怕也是重要极短学习时间、友好语言风格(特别是如果你对C比较熟悉)和大量扩充类库足以证明其强大;但是如果将这样语言版本改造成类似面向对象语言不但会使原有大量开发者在短时间内无所适从而且非常不利于吸引新开发者加入--既然有Java这样语言何必去学习PHP呢?
  
  以上是我本人些"客观"分析--所谓"客观"就是在写积极方面时候将自己伪装成个Zend Engine 2.0忠实拥护者;而在写消极方面时候则正相反(希望你在读完我分析的后也可以觉得还算客观)不过"客观"其实也只是为我"主观"论调起到铺垫作用--
  
  问题关键--我们期望将来PHP会是什么样子?
  其实问题关键也许在于我们期望PHP到底会向哪个方向发展或者说PHP会致力于哪个领域
  
  PHP的所以受到如此大欢迎尤其是在几乎没有任何商业支持(Zend公司现在对PHP提供支持但是其实力和Microsoft以及Sun比较起来实在是微不足道)情况下成为能够和ASP以及JSP抗衡编程语言它完全面向现实快速web编程环境情况在许多PHP教程中可以清楚看出--实现些常用web功能采用PHP往往意味着更少代码量和复杂程度;同时对于某特定领域编程PHP还有扩展模块可供使用(虽然没有商业支持但是PHP拥有开源软件Software众多拥护者支持他们不但为PHP产生和发展作出贡献并且提供了各种扩展模块)这样对于开发者而言更多立即可用并且免费库意味着更少工作量所需要做仅仅是查阅手册并妥善使用它们而PHP竞争对手们则显得有些"学究"-- 灵活不足而严谨有余也许大型商业公司产物在使用方便程度上确实不及黑客们得意的作吧
  
  不过为了适应现实快速web编程环境PHP在注重方便易用时候放弃了些东西:比如开发者自有模块编写和封装(非源码级别)以及面向对象特性(现有版本只是不完全支持部分特征)等等--而这些PHP缺少却是它竞争对手们所拥有(比如ASP可以和COM组件沟通JSP则可以方便使用Java Bean;JSP脱胎于Java这完全面向对象语言等等)因此PHP通常被排除在构建企业级应用候选名单的外
  
  问题核心已经比较清晰了--现在PHP发展遇到了个叉路口:是继续将自己快速web编程语言特点发挥得淋漓尽致还是将自己完善、修饰成个适应严肃商业环境需求编程语言?
  
  究竟如何--不抱太大希望
  从Zend Engine 2.0设计蓝图中看来PHP创造维护者们似乎选择了后种策略--几乎重写解释引擎面向对象模型加强语言面向对象特性我个人认为这样选择是有理由:
  
  PHP在适应快速web编程方面似乎已经做得很好在现有语言架构基础上对于此方面已经不可能有太大改变(能够做仅仅是修改、增删些核心以及按部就班增加更多扩展库)而PHP必须要发展…… J
  大部分人都意识到了PHP局限性创造维护者们更加清楚--假如PHP能够在企业级应用中获得重视那将是次更大胜利(对于开源软件Software拥护者来说也许意义更深远)提升其在该领域竞争力捷径也许就是Zend Engine 2.0设计蓝图中呈现内容--为这个面向过程相对传统语言添加全新面向对象模型使得开发者能够容易采用面向对象编程思路方法
  
  不过非常遗憾试图进入企业级计算领域PHP欠缺还太多--没有足够商业支持大量扩展模块处于试验阶段而其中些需要被用来在企业级应用中担当重任对于系统架构规划和支持不力等等还有也许是最重要是商业界观念能否接受开源而不是商业支持编程语言构建整个商业系统(不过Linux应用似乎正在展示美好前景但仅仅是前景而已)即使是乐观PHP支持者(比如我自己)对于在企业级计算中使用PHP还是持怀疑态度--即使是Zend Engine 2.0如设计蓝图所述被推出的后
  
  因此我对采用Zend Engine 2.0新版PHP并不抱有太大希望:
  
  它适用处还是在于快速web编程环境比如站等;选择PHP作为构建关键商业系统主要支持语言需要非常非常慎重
  虽然Zend Engine 2.0着重加强了面向对象特性(也许PHP创造维护者们也会大力提倡使用它们)但是对于现有大部分PHP开发者而言用现在面向过程风格书写PHP并不会受到任何影响(Zend Engine 2.0也非常周到考虑到了向下兼容问题)--也就是说表面上看PHP会由于被赋予了面向对象特征而更加强大实际上在大多数开发者手中采用Zend Engine 2.0和1.0版本(支持现在PHP 4解释引擎)PHP并没有什么区别
  
  当然还是有些值得期待地方:
  
  快速web编程环境同样需要良好建模面向对象设计和实现要比面向过程或者说是面向页面间思路方法好得多部分PHP开发者(包括PHP创造维护者们)已经在大力提倡使用语言本身面向对象特性(PEAR就是很好例子)Zend Engine 2.0将会为他们带来福音--更好面向对象模型可以几乎不受限制采用面向对象设计和实现(而现在PHP由于面向对象支持极不完全根本作不到这点);同时在对象使用性能上能够得到定提升
  违例处理机制引入对于PHP项目会带来定积极影响可以有效提高代码效率并鼓励妥善处理
  由于Zend Engine 2.0面向对象模型改进使得PHP外部组件(比如COM和Java Bean)更加方便以及合理在效率上也将得到提高改进也许会增加PHP作为异种系统(比如采用Java开发系统)前端可能性(国内minij2ee项目就是这方面个典型)
  
  对PHP开发者些建议
  首先你不需要对未来PHP有任何担忧--你所拥有开发技能在新版本中仍然适用而且运作得很好(这让我想起Micr
Tags:  php.inizend zendphp认证 phpmysqlzend phpzend

延伸阅读

最新评论

发表评论