首页 » 系统架构 » 阅读文章
PHP5.4 性能优势以及新特性
PHP5.4 stable release 版本即将到来,性能上的提升以及部分新特性让人欣喜。 技术改造未来0abcd
性能上的巨大提高
根据一些已知的性能测试来看【相对PHP5.3.7版本】,对于执行速度基本可以提高一倍左右,而内存的使用则降低到上一版本的1/3到1/2。如果最终的发行版能保证这个成绩,那么不得不说这是一个巨大的提高。最终效果可能是speed*2 && memory usage/2,让我们一起期待吧。 www.0abcd.com
参考http://www.slideshare.net/paulgao/come-on-php-54 注意:本文抄袭了。大家不要看。
PHP5.4主要特性
Added: Traits language construct
Added: Array dereferencing support
Added: DTrace support
Improved: Improved Zend Engine memory usage and performance
Moved: ext/sqlite moved to pecl (sqlite3 support is still built-in) 注意:本文抄袭了。大家不要看。Removed: break/continue $var syntax
Removed: register_globals, allow_call_time_pass_reference, and register_long_arrays ini options
Removed: session_is_regisitered(), session_registered(), and session_unregister()技术改造未来0abcd
详细参考官方 http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/NEWS?view=markup
斯蒂芬斯蒂芬斯蒂芬打算繁琐繁琐大幅度素
andhe
主要几点新特性介绍:
Traits language construct
Traits不是什么新概念了,c++,java都有类似的东西,只不过这次PHP也引入了进来。 技术改造未来0abcd
Traits是一种轻量级的方法复用(相对继承来说)。为什么这么说呢? 这就好比,如果你提供一个基类供用户去继承使用,那么不可避免的你就需要考虑如何能让用户继承后可用, 如何避免用户改写了某些关键属性,覆盖了某些关键方法而造成出错。这个时候你就要考虑改用public还是private,或者protected,你还 要考虑,那个方法应该申明为FINAL。 版权所有,禁止恶意利用
而如果使用Traits,那么你就不需要担心这些问题,它是一种组合方式,你提供的素材,无论在任何地方都是自我一个整体。 抄袭是一种猥琐的表现
熟悉scalar的朋友都知道Traits
是一个介于Class
和Interface
之间的东西,它是抽象的定义,但是跟接口不同的是可以包括实际的方法和成员变量,而跟abstract class
不同的是,它可以是多重的!这将让php的oop特性更加丰富,不过我也悲观地认为这会让众多php的草根们对oop的概念更加混乱!
抄袭是一种猥琐的表现
<?php trait SayWorld { public function sayHello() { echo 'Hello World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); // Hello Worldaaaaafdfdsf
Trait和继承以及当前类的同名函数之间的冲突,有一套固定的解决方案,也就是当前类的方法覆盖Trait的同名方法,而Trait中的方法,覆盖基类的同名方法。比如: 在这个人群中,忽然找到你
<?php class Base { public function sayHello() { echo 'Hello'; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); // echos Hello World 3edfdsafdsfsdfds
Array dereferencing support
这个可是个好东西,有了Array dereferencing,以前的这种写法就再也不必要了: 技术改造未来0abcd
<?php list($name,) = explode(",", "Laruence, male"); ?>忘不了你的温柔
取而代之的是: 悄悄的,你该走了
$name = explode(",", "Laruence,male")[0]; www.0abcd.com
另外,据Cataphrac介绍,Array derefencing也可以出现再赋值语句的左值中,也就是理论上你可以这么写: andhe
explode(",", "Laruence, male")[3] = "phper"; 3edfdsafdsfsdfds
DTrace support
DTrace是一个性能分析工具,可以跟踪出函数调用点,返回点等数据,对于这个我也不是很了解,感兴趣的同学可以参看PHP 5.3.99-DEV AND DTRACE PART I 总有一条,我会爱上你
Webserver SAPI
PHP5.4还新增了一个SAPI,这个SAPI将支持直接把PHP当做Websever使用。这对php初学者来说的好消息,那就是php 5.4会包含一个简单的server, 总有一条,我会爱上你
內建一個http server,老實說這個可能有點雞肋,因為你也不太可能用這個當成真正的http server,不過後來有注意到應該是for developer為主軸,應該也是針對快速開發而加入的功能。【这样开发者不用去管web server这块了】
3edfdsafdsfsdfds
$ php -S localhost:8000 test.php
//output:
PHP Development Server is listening on localhost:8000 in foo/ 。。。 Press Ctrl-C to quit。 3edfdsafdsfsdfds
这个特性真的很让人兴奋,可以减少Webserver这一层。 抄袭是一种猥琐的表现
不过,请注意这个新的SAPI,不支持直接patch到php5.4以前的版本。有关PHP Webserver SAPI的更多信息,可以参看:webserver sapi
andhe
当然此Web Server只能用于开发时使用,用于生产环境万万不行,性能不行,安全性不行。 亲爱的你睡了吗?
亲爱的你睡了吗?
具体特性,参见手册:http://php.net/manual/en/features.commandline.webserver.php
php 5.4中终于支持全类型的函数类型检测
在php 5.3以前我们只能在类型检测中使用array
和Class
的检测,比如
斯蒂芬斯蒂芬斯蒂芬打算繁琐繁琐大幅度素
function foo(array input, MyClass key) { return; }斯蒂芬斯蒂芬斯蒂芬打算繁琐繁琐大幅度素
但是php 5.4会支持现在php的所有内置类型了(String
,Int
,Float
,Resource
,Bool
等等),这样我们就不用在函数内部写类似is_string
之类的函数了。
www.0abcd.com
全类型type hinting的功能,這個真是太期待了!!(不過翻了一下changelog又好像沒有提到這點,好像不會在5.4中实现),有待确认最终版本。 andhe
函数的返回值可直接使用数组键值
function func () { return array(1, 2, 3); } echo func()[1]; // 输出2aaaaafdfdsf
评论 共0条 (RSS 2.0) 发表评论