看了@轩脉刃 今天出炉的PHP 5.5 新特性。不过没有翻译全,我这里稍微补充下,整理成完整的一篇:)

原文:http://www.php.net/manual/zh/migration55.new-features.php

生成器

php5.5通过引入yield关键字来支持generators。Generators提供了一种更加简洁的生成迭代器的方式,无需通过笨重复杂的Iterator接口。

一个简单的示例:利用generators实现和range函数一样的迭代功能

function xrange($start, $limit, $step = 1) {
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
} echo 'Single digit odd numbers: '; /*
* Note that an array is never created or returned,
* which saves memory.
*/
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
} echo "\n";

以上例程会输出:

Single digit odd numbers: 1 3 5 7 9

添加finally关键字

try-catch语句现在支持后边添加finally。无论是否会抛出异常,finally中的代码总是会被执行。

新的哈希API

添加了一个新的hash函数API,它可以更简单的生成安全的散列值,并且能够像crypt()一样用于密码验证管理。详细请参阅:password_hash()

foreach支持list()

现在,foreach能够利用list()结构分解被嵌套的数组,并且提取其中的值。举例来说:

$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

更多文档可以参见foreach手册。

empty()支持表达式

现在可以将任意的表达式传入empty()中。例如:

function always_false() {
return false;
} if (empty(always_false())) {
echo "This will be printed.\n";
} if (empty(true)) {
echo "This will not be printed.\n";
}

以上例程会输出:

This will be printed.

array和string字面的dereferencing

可以利用下标访问array、string字面中的某个元素或者char。(ps:dereferencing不知道怎么翻译才准确...看了轩脉刃的表述:支持用下标获取,呵呵,其实就是这个意思。)

echo 'Array dereferencing: ';
echo [1, 2, 3][0];
echo "\n"; echo 'String dereferencing: ';
echo 'PHP'[0];
echo "\n";

以上例程会输出:

Array dereferencing: 1
String dereferencing: P

通过::class获取类名

可以利用ClassName::class 获取class完整的类名。例如:

namespace Name\Space;
class ClassName {} echo ClassName::class; echo "\n";

以上例程会输出:

Name\Space\ClassName

新增扩展OPcache

Zend Optimiser+的opcode cache被加入了php扩展,成为OPcache extension。OPcache可以提高php的执行性能,它能够在共享内存中存储编译好的opcode,以此节约原本为每个请求加载\解析php脚本的时间。具体安装和使用详情请参考the installation instructions

foreach支持非标量key

foreach现在支持任何类型的key。原生的php数组仅能够用标量作为key,而现在可以通过实现Iterator::key()来返回任意类型的数据,并且foreach均能接收。

在win平台上支持Apache 2.4

windows上用于apache2.4的SAPI已被实现支持。

改进GD

GD扩展做出了很多改进,包括:

• 用于翻转图像的imageflip()函数

• 用于裁剪图像的 imagecrop()imagecropauto() 函数

• 用于读写webp格式图像的imagecreatefromwebp()imagewebp() 函数

PHP5.5的新特性的更多相关文章

  1. PHP5.4.0新特性研究

    PHP5.4.0新特性研究 1.内建Web Server 这的确是个好的改进,大大的方便了开发人员.以后开发机不装nginx,httpd也行 cd $PHP_INSTALL_PATH ./bin/ph ...

  2. php5.5之后新特性整理

    1 生成器 yield关键字yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php查看文档,能知道yield的一 ...

  3. PHP5.3、PHP5.4、PHP5.5、PHP5.6的新特性

    1. PHP5.3中的新特性 1.1 支持命名空间(namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,可以用命名空间防止代码的冲突,命名空间的分隔符为 ...

  4. php7和PHP5对比的新特性和性能优化

    1  抽象语法树( AST) 1)在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 token 流:    Parsing:语法分析,在 ...

  5. paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较

    paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...

  6. php5.3到php7.0.x新特性介绍

    <?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...

  7. php5.3新特性 之 mysql native driver(mysqlnd)

    概述 本文主要写给sa看的.码农就不用看了. mysql native driver(mysqlnd) 自从php5.3.0开始成为官方源代码的一部分, 用来取代传统的mysql client lib ...

  8. PHP5.3, PHP5.4, PHP5.5新特性

    PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭包.Lambda/Anony ...

  9. php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的

      1.PHP 5.3中的新特性 1.1 PHP 5.3中的新特性 1.1.1. 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,则只 ...

随机推荐

  1. document.referrer的使用和window.opener 跟 window.parent 的区别

    偶尔看到了document.referrer,之前一直有点疑惑与window.opener 和 window.parent之间的区别 首先查了一下w3cSCHOOL, 上面的解释:referrer 属 ...

  2. Orcale 之 SQL 数据定义

    SQL 的数据定义功能主要是针对数据对象进行定义的,这些数据对象主要包括:表,视图以及索引. 注意:由于视图是基于表的虚表,而索引是依附在基表上的,所以视图和索引均不提供修改视图和索引定义的操作.如果 ...

  3. spring自定义标签之 自我实现

     引言: 最近心情比较难以平静,周末的两天就跑出去散心了,西湖边上走走,看日落,还是不错的.回来博客上发现,在自定义标签上,最后一步实现忘记加上了.其实,人生的路程中,我们总是实现着自我的价值,让自己 ...

  4. [LNMP]——LNMP环境配置

    LNMP=Linux+Nginx+Mysql+PHP Install Nginx //安装依赖包 # yum install openssl openssl-devel zlib-devel //安装 ...

  5. Exists/In/Any/All/Contains操作符

    Exists/In/Any/All/Contains操作符 适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就 ...

  6. [转]微信小程序开发踩坑记录

    本文转自:http://www.cnblogs.com/NKnife/p/6283605.html 1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app. ...

  7. MySQL函数库

    MySQL函数库,这个函数库是一个外部函数库!这个函数提供了对于MySQL数据库进行操作的常用函数,如连接MySQL服务器.打开数据库.执行SQL语句等.所以这个函数库的功能对于我们来说是非常重要的! ...

  8. ​Error -4075: File not found. An error occurred merging module <MODULENAME> for feature <FEATURENAME>.

    利用Install Shield2010制作安装包的时候一直报这样的错误,原以为是我自己安装包制作流程的问题,又重新做了2个,但是还是出现问题. 解决办法: 查找资料发现是Install Shield ...

  9. pm2在node中的应用

    pm2 是一个带有负载均衡功能的Node应用的进程管理器,当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, pm2是完美的. 主要特性: 内建负载均衡(使用Nod ...

  10. C# Windows服务创建应用

    创建项目 1.创建windows服务项目 2.右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3.OnStart函数在启动服务时执行,OnStop函数在停止服务时执行.代码中OnSt ...