快速业务通道

PHP5.4 官方体验

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23

  PHP5.3刚出来不久, PHP6孕育中的同时, PHP5.4又放出了第一个alpha版本.

PHPNW11

  5.4主要包括以下特性:

  Added: Traits language constructAdded: Array dereferencing supportAdded: DTrace supportImproved: Improved Zend Engine memory usage and performanceMoved: ext/sqlite moved to pecl (sqlite3 support is still built-in) Removed: break/continue $var syntaxRemoved: register_globals, allow_call_time_pass_reference, and register_long_arrays ini optionsRemoved: session_is_regisitered(), session_registered(), and session_unregister()

  我们重点关注下新增的这三点:

  Traits language construct

  Traits不是什么新概念了, c++, java都有类似的东西, 只不过这次PHP也引入了进来.

  Traits是一种轻量级的方法复用(相对继承来说).为什么这么说呢? 这就好比, 如果你提供一个基类供用户去继承使用, 那么不可避免的你就需要考虑如何能让用户继承后可用, 如何避免用户改写了某些关键属性, 覆盖了某些关键方法而造成出错. 这个时候你就要考虑改用public还是private, 或者protected, 你还要考虑, 那个方法应该申明为FINAL..

  而如果使用Traits, 那么你就不需要担心这些问题, 它是一种组合方式, 你提供的素材, 无论在任何地方都是自我一个整体.

  sayHello();// Hello World

  Trait和继承以及当前类的同名函数之间的冲突, 有一套固定的解决方案, 也就是当前类的方法覆盖Trait的同名方法, 而Trait中的方法, 覆盖基类的同名方法. 比如:

  sayHello();// echos Hello World

  更多关于Traits的信息, 请参考: Traits for PHP RFC

  Array dereferencing support

  这个可是个好东西, 有了Array dereferencing, 以前的这种写法就再也不必要了:

  

  取而代之的是:

  $name=explode(",","Laruence,male")[0];

  另外, 据Cataphrac介绍, Array derefencing也可以出现再赋值语句的左值中, 也就是理论上你可以这么写:

  explode(",","Laruence,male")[3]="phper";

  但也许有朋友会问这个有什么意义么? 呵呵, 当时我也对Cataphrac提出了这样的疑问, 不过后来了解到, 还是有一些场景可以用到的, 比如你先需要调用一个函数做初步处理,然后对处理结果进行调整:

  DTrace support

  DTrace是一个性能分析工具, 可以跟踪出函数调用点,返回点等数据, 对于这个我也不是很了解, 感兴趣的同学可以参看PHP 5.3.99-DEV AND DTRACE PART I

  Webserver SAPI

  最后, PHP5.4还新增了一个SAPI, 这个SAPI将支持直接把PHP当做Websever使用:

  $ php -S localhost:8000 test.php//output:PHP Development Server is listening on localhost:8000 in foo/... Press Ctrl-C to quit.

  这个特性真的很让我兴奋, 因为在差不多半个月以前, 我就和我的几个同事探讨过, 是否可以做一个类似东西, 来减少Webserver这一层.

  不过, 和philip沟通得知, 这个新的SAPI, 错过了alpha1版本, 应该会在下个测试版, 和最终版中放出来, 也不支持直接patch到php5.4以前的版本(这个比较悲剧, 如果要用, 看来只能自己折腾了). 有关PHP Webserver SAPI的更多信息, 可以参看:webserver sapi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号