zoukankan      html  css  js  c++  java
  • PHP5.5的新特性

    看了@轩脉刃 今天出炉的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 "
    ";

    以上例程会输出:

    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
    ";
    }

    以上例程会输出:

    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.
    ";
    }
    
    if (empty(true)) {
        echo "This will not be printed.
    ";
    }

    以上例程会输出:

    This will be printed.

    array和string字面的dereferencing

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

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

    以上例程会输出:

    Array dereferencing: 1
    String dereferencing: P

    通过::class获取类名

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

    namespace NameSpace;
    class ClassName {}
    
    echo ClassName::class;
    
    echo "
    ";

    以上例程会输出:

    NameSpaceClassName

    新增扩展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() 函数

    知识共享许可协议
    本作品由driftcloudy创作,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。欢迎自行转载,发布,演绎,但必须保留本文作者署名driftcloudy(包含链接http://www.cnblogs.com/driftcloudy),且不得用于商业目的。
  • 相关阅读:
    Java day03第三课流程控制
    java day02第二课基本数据类型、修饰符、运算符
    Objective-C 枚举类型和字符串互转方案
    UISlider
    ios中AES和RSA 加密
    1. SEL和IMP(动态性)
    《iOS开发进阶》
    【旧事重提】iOS中文件读写
    Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
    Unity3D 与 Xcode的结合
  • 原文地址:https://www.cnblogs.com/driftcloudy/p/3165999.html
Copyright © 2011-2022 走看看