注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

PHP 5.4弃Register Globals增Traits  

2012-04-10 23:09:28|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

PHP 5.4于本月尘埃落定,它是PHP自2009年以来的首次重大更新。该版本对语言部分进行了增强,包括支持Traits和移除部分争议特性。

Traits

同Java和.NET一样,PHP使用单一继承模型。虽然这种模型足够应付大部分用例场景,但有时用户也需要将一些通用样板代码放置其他无关联的类中。(.NET的Dispose方法就是这类样板代码(boiler-plate code)中一个很好的例子。)为解决这样的问题,PHP5.4推出了Traits

Traits是一个方案集合,它不属于任何实际类。用户没法创建Trait实例或直接调用Trait中的方法,相反,用户必须将Traits合并到 实际的类当中方能使用它们。在优先级方面,Trait方法会覆盖继承而来的同名方法,而当前合并类中的同名方法则会覆盖Trait方法。

Traits之间拥有相同的优先级,因此默认情况下,将两个包含重叠方法名的Traits加入到相同类中是个错误的做法。当然,使用 “insteadof”和“as”操作符可以手工解决冲突,从而避免这个错误。此外,“as”操作符还可以用于改变Trait的可见性 (visibility)。

Traits中的方法可以是抽象方法,用于支持Traits的部分泛化;同时,Traits也可以对外暴露静态变量,每个包含Traits的类都将拥有该变量的一份拷贝。此外,在Traits中已经声明过的属性不可以再在包含它的类中声明。

其他语法改进

其他语法改进包括:

  • 数组现在可以使用方括号进行声明,而不再需要使用“array”函数。新的声明方式除了略微简洁之外,没有其他影响;
  • 现在可以直接对函数返回值进行数组取值。在此之前,函数返回值的结果必须先存入一个临时变量中,如:$FirstName = GetNames()[0];
  • PHP 5.4中的闭包现在可以使用“$this”指针,这在以前是不可以的;
  • 现在可以在实例化时访问类成员,如: (new CustomerService)->Delete(customerId);
  • 采用“0b”前缀标识二进制数。

命令行Web服务器

PHP 5.4提供了自己的Web服务器,你可以从命令行中启动它。该Web服务器的设计目的仅在于帮助开发,它不会取代你的生产Web服务器。

弃用特性

备受指责的Register Globals已从PHP中完全删除。十年来,该特性一直以其频繁发生的安全漏洞而著称。2002年该特性被设置为默认关闭。2009年发布的PHP5.3将该特性标记为“弃用”,想必从那时起,大部分开发人员已经不再使用它。

从PHP中移除的另一个不讨喜的特性是Magic Quotes。Magic Quotes本意是对字符串进行自动转义(escape)以试图避免SQL注入攻击。但是由于字符串的转义使用方法常与特定背景相关,因此,比起试图解决 的问题,它反而造成了更多的问题。该特性同Register Globals一样,也在2009年被标记为“弃用”。

PHP中的breakcontinue 语句之后可以跟上一个参数用来指明跳出的循环层数。如果不指定参数,它会像VB、C#或Java一样跳出最内层的循环。在PHP 5.4之前,开发人员可以向break语句传递一个变量,而现在只能传递常量。

PHP允许参数按引用传递。在早期版本中,你可以通过为调用点添加修饰来指明变量按引用传递。在PHP 5.4中,该选项已被移除。相反,现代PHP编程只需要在函数声明时指定按引用传递即可。与C#不同,你不需要同时在声明和调用点指定按引用传递。

查看英文原文:http://www.infoq.com/news/2012/03/PHP-5.4

  评论这张
 
阅读(1153)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017