- 支持命名空间 ( Namespace )
在PHP5.3之前,惯例的划分Package的办法是通过目录名来分隔代码文件,代码中的类名则用下划线_来表示目录。例如
这样的命名方式被PEAR、Zend Framework及各种PHP项目广泛采用。虽然该方法可以避免不同包或类库中的类名产生冲突,但在书写代码的时候显得较为麻烦和笨拙。
- 支持延迟静态绑定( Late Static Binding )
这和我们的预期不同,我们原来想得到子类的相应结果。
- 支持 goto 语句
if
语句。
- 支持闭包、 Lambda/Anonymous 函数
create_function()
在代码运行时创建函数。但有一个问题:创建的函数仅在运行时才被编译,而不与其它代码同时被编译成执行码,因此我们无法使用类似APC这样的执行码缓存来提高代码执行效率。
在 PHP5.3 中,我们可以使用 Lambda/ 匿名函数来定义一些临时使用(即用即弃型)的函数,以作为 array_map()/array_walk()
等函数的回调函数。
- 新增两个魔术方法 __callStatic() 和 __invoke()
PHP 中原本有一个魔术方法__call(),当代码调用对象的某个不存在的方法时该魔术方法会被自动调用。新增的__callStatic()方法则只用于静态类方法。当尝试调用类中不存在的静态方法时,__callStatic()魔术方法将被自动调用。
以函数形式来调用对象时,__invoke()方法将被自动调用。
- 新增Nowdoc语法,用法和Heredoc类似,但使用单引号。Heredoc则需要通过使用双引号来声明。
支持通过Heredoc来初始化静态变量、类成员和类常量。
- 在类外也可使用const来定义常量
PHP5.3 新增了一种常量定义方式:
- 三元运算符增加了一个快捷书写方式: ?:
如果expr1结果为True,则返回expr2的结果。
如果expr1结果为True,则返回expr1的结果
- HTTP 状态码在200-399范围内均被认为访问成功
- 支持动态调用静态方法
- 支持嵌套处理异常(Exception)
- 新的垃圾收集器(GC),并默认启用
1. 修复了大量bug
2. PHP 性能提高
3. php.ini 中可使用变量
ereg
正则表达式函数 不再默认可用,请使用速度更快的 PCRE 正则表达式函数
其余参考:
http://www.ibm.com/developerworks/cn/opensource/os-php-5.3new1/
http://www.ibm.com/developerworks/cn/opensource/os-php-5.3new2/
http://www.ibm.com/developerworks/cn/opensource/os-php-5.3new3/
http://www.ibm.com/developerworks/cn/opensource/os-php-5.3new4/index.html
http://www.ibm.com/developerworks/cn/opensource/os-php-5.3new5/index.html