快速业务通道

PHP 5.3 与 PHP 5.2 开发区别和新特性

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

  PHP V5.3  发布已经很久。“PHP V5.3 中的新特性” 系列文章将持续介绍该发行版提供的令人兴奋的新特性。

     第 1 部分 介绍了 PHP 5.3 中对面向对象编程及对象处理所做的更改,
     第 2 部分 介绍了闭包函数及 lambda 函数。
     第 3 部分 探讨了名称空间,这是该 PHP 版本中最令人期待也是最具争议的特性之一。
     第 4 部分 中,我们进一步研究了 Phar,这是一种用于 PHP 的归档格式。

  简介

  本系列着重介绍 PHP V5.3 中的新特性,例如名称空间、闭包、对象管理、面向对象编程和 Phar。虽然这些动人的新特性作为该语言的增补广受欢迎,但 PHP V5.3 同时也是为进一步优化 PHP 而设计的。它构建在流行、稳定的 PHP V5.2 的基础上,并对该语言作了增强,使之更加强大。在本文中,了解 PHP V5.3 中的变化,以及从 PHP V5.2 升级到 PHP V5.3 时需要考虑的一些事情。

  语法变化

  该语言新增了名称空间和闭包(在 第 2 部分 和 第 3 部分 中有讨论到),增加了更多的保留字。从 PHP V5.3 开始,namespace 不再用作标识符。closure 类现在是一个保留类,但它仍然可以作为有效的标识符。清单 1 显示了一些例子,由于新增的保留字的缘故,有些语句在 PHP V5.3 中不再有效。

  清单 1. 无效的 PHP 语句

  // the function definition below will throw a fatal error in PHP 5.3, but is perfectly

  // valid in 5.2

  function namespace()

  {

  ....

  }

  // same with this class definition

  class Closure

  {

  ....

  }

  PHP V5.3 中还增加了对 goto 语句的支持。现在,goto 是一个保留字。goto 语句在现代语言中不太常见(您也许记得在 BASIC 中如何使用 goto),但是有些情况下,goto 语句的确方便。清单 2 显示了一个如何使用 goto 语句的例子。

  清单 2. PHP 中的 goto 语句

  echo "This text will get outputted";

  goto a;

  echo "This text will get skipped";

  a:

  echo "This text will get outputted";

  goto 的一个可能的用例是中断深度嵌套的循环和 if 语句。这将使代码阅读起来清晰很多。

  函数和方法的变化

  在 PHP V5.3 中,函数和方法没有大的变化,但还是有一些增强,以帮助解决 PHP 中的一些突出问题并提高性能。本节讨论一些较为显著的变化。

  在之前版本的 PHP 中,数组函数 atsort、natcasesort、usort、uasort、uksort、array_flip 和 array_unique 可以以参数形式传递对象而不是数组。然后,这些函数将对象的属性当做数组的键和值。PHP V5.3 中不再支持这一点,所以需要首先将对象转换成数组。清单 3 展示了如何修改代码。

  清单 3. 为某些函数修改代码,将对象转换成数组

  $obj = new stdClass;

  $obj->a = ''1'';

  $obj->b = ''2'';

  $obj->c = ''3'';

  print_r(array_flip($obj)); // will NOT work in PHP 5.3, but will in PHP 5.2

  print_r(array_flip((array) $obj)); // will work in PHP 5.3 and 5.2

  魔术类方法现在受到更严格的限制。下面的方法必须具有公共可见性:

  __get

  __set

  __isset

  __unset

  __call

  现在,当在静态上下文中使用 __call 时,为了应对上述变化,可以使用新的 __callStatic() 魔术方法。除了不接受参数的 __isString() 魔术方法以外,这些方法的必需参数都是强制性的,并且必须提供。清单 4 显示了如何使用这些

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号