php 5.4的beta版本即将发布,网上已经出现了很多对于php 5.4新特性介绍的reference,这里有一份官方的详细列表可以供参考http://svn.php.net/viewvc/php/php-src...。对于我来说,除了一些bug的修复,最值得期待的是两方面
根据一些已知的性能测试来看,对于执行速度基本可以提高一倍左右,而内存的使用则降低到上一版本的1/3到1/2。如果最终的发行版能保证这个成绩,那么不得不说这是一个巨大的提高。
非常有意思的是php 5.4居然引入了scalar中Traits(特质)的概念,熟悉scalar的朋友都知道Traits
是一个介于Class
和Interface
之间的东西,它是抽象的定义,但是跟接口不同的是可以包括实际的方法和成员变量,而跟abstract class
不同的是,它可以是多重的!这将让php的oop特性更加丰富,不过我也悲观地认为这会让众多php的草根们对oop的概念更加混乱:(
trait A { public function foo(); } trait B { public function bar() { return; } } class C { use A, B; public function execute() { echo $this->bar(); } }
另一个我比较关心的特性是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
之类的函数了。
还有一个让无数php开发者曾经无比纠结的问题,终于在这个php 5.4中修复了(至少我认为是修复)。那就是在函数的返回值中直接使用数组键值了
function func () { return array(1, 2, 3); } echo func()[1]; // 输出2
这个看似理所当然的东西居然要等到php 5.4中才修复,要是早点修复可以节省多少变量,少排放多少二氧化碳啊。
还有一个对php初学者来说的好消息,那就是php 5.4会包含一个简单的server,大家不用再去烦恼如何配置apache之类的了。
php在我眼里离一个完美的语言还相差甚远,但幸好他是一个相当趁手的语言。所以我对它也有我的期待,那就是
增加对服务端持久化的支持,虽然有apc cache之类的东西,但是没有语言级的解决,还是感觉到不方便。
这里有一些老外 对php的期许http://www.reddit.com/r/PHP/comments/...,你们自己希望有那些新特性呢?
大家讲道理2017-04-10 13:10:34
所有的特性我都很期待!不过同时也看出来php知道来自ruby等后起之秀的压力了,其实这里面的新特性对于相对较新的脚本语言来说都不是什么新东西了。
另外自带的server我觉得也是再向ruby看齐吧(ruby gem里面有一个用ruby写的server,rails里面就在用这个)在开发环境中用还是能获取一定方便的。
另外 @joyqi 说的持久化也是我期待的东西,php目前的特性导致在跑一些经常运行的重复工作,比如大部分框架的初始化工作的时候都会占用过多计算资源。
下面是我对各个新特性的感受:
巴扎黑2017-04-10 13:10:34
http://www.slideshare.net/paulgao/com...
我这个 PPT 内容会随着 5.4 的进展进行更新的。希望各位持续关注。
非常抱歉,我这个ppt里关于 scalar type hint 的描述是错误的,PHP Team 在生成5.4分支的最后的时刻,将这个特性拿掉了,大体原因可能是实现的不够完美吧。我当时没有注意到,以为这个特性还继续存在在代码里。在这里说一声抱歉。ppt 已经更新。
PHP中文网2017-04-10 13:10:34
PHP 5.4 alpha1刚刚发布了。
新增特性:
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()
This is the first release that adopts the releaseprocess RFC. The next alpha will be >released within four weeks. The PHP 5.4 feature set and API has not been finalized.
更多详细
http://www.php.net/archive/2011.php#i...