background image

对于

PHP 5.4 新性能改动需知

PHP 5.4.0 性能大幅提升, 修复超过 100 个 bug. 废除了 register_globals, magic_quotes 以及安
全模式
PHP 5.4 来了,这是自 5.3 后的又一次主版本升级。此次升级改动较为显著,删除了一些过
气儿的函数,带来了高达

20%的速度提升和更少的内存使用。

新特性与改动
此次更新的关键新特性,包括:新增

traits,更精简的 Array 数组语法,供测试使用的内建

webserver,可以闭包使用的

$this

指针,实例化类成员访问,

PHP 5.4.0 性能大幅提升, 修复超过 100 个 bug. 废除了 register_globals, magic_quotes 以及安
全模式。

 另外值得一提的是多字节支持已经默认启用了,default_charset 从 ISO-8859-1 已经

变为

UTF-8. 默认发送“Content-Type: text/html; charset=utf-8”,你再也不需要在 HTML 里写

meta tag,也无需为 UTF-8 兼容而传送额外的 header 了。
Traits
Traits (横向重用/多重继承)是一组结构很像“类”(但不能实例化)的方法,它可以让开发人员
在不同的类中轻松地重用方法。

 PHP 为单继承语言,子类只能继承一个父类,于是 Traits 来

了。
Traits 的最佳应用是多类之间可以共享相同的函数。打个比方,我们要做个网站,需要使用
Facebook 和 Twitter 的 APIs。我们要建 2 个类,如果是以前,我们需要写一个 cURL 的方法
并且复制

/粘贴到两个类中。现在不用了,使用 Traits 重用代码吧,这次真正地遵循了

 

DRY(Don't Repeat Yourself)原则。
代码如下

:

 

/** cURL wrapper trait */

trait cURL
{

public

 

function

 curl(

$url

)

{

$ch

 = curl_init();

curl_setopt(

$ch

, CURLOPT_URL, 

$url

);

curl_setopt(

$ch

, CURLOPT_RETURNTRANSFER, 1);

$output

 = curl_exec(

$ch

);

curl_close(

$ch

);

return

 

$output

;

}
}

/** Twitter API Class */
class

 Twitter_API

{

use

 cURL; 

// use trait here

public

 

function

 get(

$url

)