1Next >
blover | 发表于:11-11-16 10:15 [添加收藏] 楼主 [回复] #Top# |
---|---|
人气:3
积分:2
金币:16
|
PHP5.3刚出来不久,PHP6孕育中的同时,PHP5.4又放出了第一个Beta版本。PHP 的 5.4x 分支新添加了许多新的特性,如 mixin 语法“traits”、直接使用数组下标访问函数返回值 explode(",", "a,b,c,d,e")[3] 、方便调试用的内置 Webserver SAPI 等。其中一些特性(如 traits)将改变我们的开发方式。网上已经出现了很多对于php 5.4新特性介绍的reference,这里有一份官方的详细列表可以供参考http://svn.php.net/viewvc/php/php-src...。 PHP5.4主要包括以下特性:
我们重点关注下新增的主要几点新特性: Traits language construct Traits不是什么新概念了,c++,java都有类似的东西,只不过这次PHP也引入了进来。 Traits是一种轻量级的方法复用(相对继承来说)。为什么这么说呢? 这就好比,如果你提供一个基类供用户去继承使用,那么不可避免的你就需要考虑如何能让用户继承后可用, 如何避免用户改写了某些关键属性,覆盖了某些关键方法而造成出错。这个时候你就要考虑改用public还是private,或者protected,你还要考虑,那个方法应该申明为FINAL。 而如果使用Traits,那么你就不需要担心这些问题,它是一种组合方式,你提供的素材,无论在任何地方都是自我一个整体。 熟悉scalar的朋友都知道 <?php trait SayWorld { public function sayHello() { echo 'Hello World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); // Hello World 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 Array dereferencing support 这个可是个好东西,有了Array dereferencing,以前的这种写法就再也不必要了: <?php list($name,) = explode(",", "Laruence, male"); ?> 取而代之的是: $name = explode(",", "Laruence,male")[0]; 另外,据Cataphrac介绍,Array derefencing也可以出现再赋值语句的左值中,也就是理论上你可以这么写: explode(",", "Laruence, male")[3] = "phper"; 比如你先需要调用一个函数做初步处理,然后对处理结果进行调整: <?php function &ref(&$arr) { return $arr; } $arr = array(1,2,3); ref($arr)[4] = 4; var_dump($arr); ?> DTrace是一个性能分析工具,可以跟踪出函数调用点,返回点等数据,参看PHP 5.3.99-DEV AND DTRACE PART I PHP5.4还新增了一个SAPI,这个SAPI将支持直接把PHP当做Websever使用。这对php初学者来说的好消息,那就是php 5.4会包含一个简单的server,大家不用再去烦恼如何配置apache之类的了。 $ php -S localhost:8000 test.php //output: PHP Development Server is listening on localhost:8000 in foo/ 。。。 Press Ctrl-C to quit。 这个新的SAPI,错过了alpha1版本,应该会在下个测试版,和最终版中放出来,也不支持直接patch到php5.4以前的版本(这个比较悲剧,如果要用,看来只能自己折腾了)。有关PHP Webserver SAPI的更多信息,可以参看:webserver sapi
当然此Web Server只能用于开发时使用,用于生产环境万万不行,性能不行,安全性不行。 具体特性,参见手册:http://php.net/manual/en/features.commandline.webserver.php php 5.4中终于支持全类型的函数类型检测了,在php 5.3以前我们只能在类型检测中使用 function foo(array input, MyClass key) { 但是php 5.4会支持现在php的所有内置类型了( 还有一个让无数php开发者曾经无比纠结的问题,终于在这个php 5.4中修复了(至少我认为是修复)。那就是在函数的返回值中直接使用数组键值了 function func () {
Ta最近还发表过
[其他]
学习PHP的秘籍
(11-11-19)
[分享]
PHP 5.4即将到来:将内置Web Server
(11-11-16)
随机阅读
[使用]
网站遭到攻击了 是要继续还是放弃呀 ?
(15-03-20)
[分享]
kingcms用亚普采集文章后缀生成办法
(12-11-23)
[帮助]
每当空闲下来之后 都想上此论坛来看看
(12-07-02)
[分享]
浅谈网站排名和哪些要素有关
(12-02-15)
[帮助]
把“流行”的B2C商城做得流行起来
(11-06-13)
|
1Next >