设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

PHP 5.4即将到来:将内置Web Server

2011-10-25 17:58| 发布者: joejoe0332| 查看: 11380| 评论: 1|原作者: LUPA开源社区|来自: 网络整理

摘要:   PHP5.3刚出来不久,PHP6孕育中的同时,PHP5.4又放出了第一个Beta版本。PHP 的 5.4x 分支新添加了许多新的特性,如 mixin 语法“traits”、直接使用数组下标访问函数返回值 explode(",", "a,b,c,d,e{ ...

  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主要包括以下特性:

Added: Traits language construct
Added: support
Added:
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()

的reference,这里有一份官方的详细列表可以供参考http://svn.php.net/viewvc/php/php-src...

对于我来说,除了一些bug的修复,最值得期待的是两方面

性能上的巨大提高

根据一些已知的性能测试来看,对于执行速度基本可以提高一倍左右,而内存的使用则降低到上一版本的1/3到1/2。如果最终的发行版能保证这个成绩,那么不得不说这是一个巨大的提高。

新特性的引入

  我们重点关注下新增的主要几点新特性:

  Traits language construct

  Traits不是什么新概念了,c++,java都有类似的东西,只不过这次PHP也引入了进来。

  Traits是一种轻量级的方法复用(相对继承来说)。为什么这么说呢? 这就好比,如果你提供一个基类供用户去继承使用,那么不可避免的你就需要考虑如何能让用户继承后可用, 如何避免用户改写了某些关键属性,覆盖了某些关键方法而造成出错。这个时候你就要考虑改用public还是private,或者protected,你还要考虑,那个方法应该申明为FINAL。

  而如果使用Traits,那么你就不需要担心这些问题,它是一种组合方式,你提供的素材,无论在任何地方都是自我一个整体。

  熟悉scalar的朋友都知道Traits是一个介于ClassInterface之间的东西,它是抽象的定义,但是跟接口不同的是可以包括实际的方法和成员变量,而跟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 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

更多关于Traits的信息,请参考: Traits for PHP RFC


酷毙
5

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (5 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部