美文网首页
PHP7新特征

PHP7新特征

作者: 乔四儿丶 | 来源:发表于2020-08-19 13:59 被阅读0次

    指定参数 返回值类型

    强制模式(默认)
    严格模式(declare(strict_types=1); )

    <?php
    // 强制模式
    function sum(int ...$ints)
    {
       return array_sum($ints);
    }
    
    print(sum(2, '3', 4.1));
    ?>
    返回值为9
    
    <?php
    // 严格模式
    declare(strict_types=1);
    
    function sum(int ...$ints)
    {
       return array_sum($ints);
    }
    
    print(sum(2, '3', 4.1));
    ?>
    报错
    

    zval 结构的变化

    变量的引用计数只记录在自身

    引入 Throwable 接口

    错误及异常都实现了 Throwable,无法直接实现 Throwable,但可以扩展 \Exception 和 \Error 类。可以用 Throwable 捕捉异常跟错误。\Exception 是所有PHP及用户异常的基类;\Error 是所有内部PHP错误的基类。

    intdiv() 函数

    intdiv(a, b) == a除以b,然后取整
    <?php
    echo intdiv(9,3),PHP_EOL; // 3
    echo intdiv(10,3),PHP_EOL; // 3
    echo intdiv(5,10),PHP_EOL; // 0
    ?>
    

    常量数组

    <?php
    // 使用 define 函数来定义数组
    define('sites', [
       'Google',
       'Runoob',
       'Taobao'
    ]);
    
    print(sites[1]);
    ?>
    

    合并运算符(??,?:)

    NULL 合并运算符(??)会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
    a ?: 0不等同于 !empty(a) ? a : 0。a未定义时a?:0会报错,!empty(a)不会

    $a = 10;
    var_dump($a ?? "a"); // 相当于: isset($a) ? $a : 'a' => 输出 10  
    var_dump($a ?: "b"); // 相当于: $a ? $a : 'a' =>输出 10
    

    use

    同一个命名空间引入不同函数、对象时,可以用{}

    use some\namespace\{ClassA, ClassB, ClassC as C};
    

    太空船运算符

    用于比较两个表达式 a 和b,如果 a 小于、等于或大于b时,它分别返回-1、0或1。
    a <=>b

    支持数组内解包 – 数组扩展Spread运算符(php7.4)

    $parts = ['apple', 'pear'];
    $fruits = ['banana', 'orange', ...$parts, 'watermelon'];
    var_dump($fruits);
    相当于array_merge但是更快
    

    箭头函数 2.0 (简短闭包php7.4)

    function cube($n){
        return ($n * $n * $n);
      }
      $a = [1, 2, 3, 4, 5];
      $b = array_map('cube', $a);
      print_r($b);
      
    $a = [1, 2, 3, 4, 5];
    $b = array_map(fn($n) => $n * $n * $n, $a);
    print_r($b);
    

    预加载,是在模块初始化的时候,将库和框架加载到 OPCache 中

    支持对const可见限定

    相关文章

      网友评论

          本文标题:PHP7新特征

          本文链接:https://www.haomeiwen.com/subject/krwrjktx.html