PHP 5.3新增特征
- 添加了命名空间的支持.
- 添加了静态晚绑定支持.可以参考理解 PHP 延迟静态绑定 (late static bindings)这篇文章进行学习。
- 添加了跳标签支持.
- 添加了原生的闭包(Lambda/匿名函数)支持.
- 新增了两个魔术方法, __callStatic 和 __invoke.
- 添加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.
- 使用 Heredoc 来初始化静态变量和类属性/常量变为可能.
- 可使用双引号声明 Heredoc, 补充了 Nowdoc 语法.
- 可在类外部使用 const 关键词声明 常量.
- 三元运算操作符有了简写形式: ?:.
- HTTP 流包裹器将从 200 到 399 全部的状态码都视为成功。
- 动态访问静态方法变为可能.
- 异常可以被内嵌.
- 新增了循环引用的垃圾回收器并且默认是开启的.
- mail() 现在支持邮件发送日志. (注意: 仅支持通过该函数发送的邮件.)
PHP 5.4新增特征
- 新增支持 traits 。
- 新增短数组语法,比如
$a = [1, 2, 3, 4];
或$a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
。 - 新增支持对函数返回数组的成员访问解析,例如 foo()[0] 。
- 现在 闭包 支持 $this 。
- 现在不管是否设置 short_open_tag php.ini 选项,
<?=
将总是可用。 - 新增在实例化时访问类成员,例如:
(new Foo)->bar()
。 - 现在支持 Class::{expr}() 语法。
- 新增二进制直接量,例如:0b001001101 。
- 改进解析错误信息和不兼容参数的警告。
- SESSION 扩展现在能追踪文件的 上传进度 。
- 内置用于开发的 CLI 模式的 web server 。
PHP 5.5新增特征
新增生成器。PHP官方文档如下描述PHP生成器:
生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。
生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限,或者会占据可观的处理时间。相反,你可以写一个生成器函数,就像一个普通的自定义函数一样, 和普通函数只返回一次不同的是, 生成器可以根据需要 yield 多次,以便生成需要迭代的值。新增finally关键字
- foreach现在支持list()
foreach 控制结构现在支持通过 list() 构造将嵌套数组分离到单独的变量。例如:
<?php
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
echo "A: $a; B: $b\n";
}
?>
以上例程会输出:
A: 1; B: 2
A: 3; B: 4
- empty()支持任意表达式
empty() 现在支持传入一个任意表达式,而不仅是一个变量。例如:
<?php
function always_false() {
return false;
}
if (empty(always_false())) {
echo 'This will be printed.';
}
if (empty(true)) {
echo 'This will not be printed.';
}
?>
以上例程会输出:
This will be printed.
- 增加password_*系列密码函数,详情查看password_hash