zoukankan      html  css  js  c++  java
  • php 7.1 新特性解析

    php 7.1 新特性解析

    返回值和传入参数可以指定为 null

    <?php
    
    function testReturn(): ?string
    {
        return 'elePHPant';
    }
    
    var_dump(testReturn());
    
    // 此处返回值如果没有问号,那么不能返回 null 值
    function testReturn(): ?string
    {
        return null;
    }
    
    var_dump(testReturn());
    
    // 参数类型提示为 ?string 代表可以传入一个 null 类型和 string 类型的值,但是不能不传值
    function test(?string $name)
    {
        var_dump($name);
    }
    
    test('elePHPant');
    test(null);
    test();
    

    void 函数

    function swap(&$left, &$right) : void  // 在函数定义时,可以将 void 作为返回值类型,并且不能返回 null
    

    短数组语法解析数组元素

    <?php
        
    // 可以使用 [] 短数组语法代替 list
    $data = [
        [2, 'b', 'B'],
        [3, 'c', 'C'],
    ];
    
    // list 可以解析数组的每个元素
    foreach ($data as list($id, $lower, $upper)) {
        echo $id.$lower.$upper.PHP_EOL;
    }
    
    // 7.1 中可以使用两个中括号解析数组,当做 list 来用
    foreach ($data as [$id, $lower, $upper]) {
        echo $id.$lower.$upper.PHP_EOL;
    }
    
    // list 支持自定义键名, 并且只能使用自定义键名进行赋值,无法自动按照顺序进行赋值
    $data = [
        ["id" => 1, "lower" => 'a', 'upper' => 'A'],
    ];
    
    // data 中 lower 的值赋值给 $id1
    ["lower" => $id1, "id" => $name1] = $data[0];
    

    类常量可见性

    <?php
    class ConstDemo
    {
        const PUBLIC_CONST_A = 1; // 默认还是 public 的
        public const PUBLIC_CONST_B = 2; // php7.1之前不允许设置可见性(封装特性)
        protected const PROTECTED_CONST = 3;
        private const PRIVATE_CONST = 4;
    }
    

    iterable 伪类

    这个类可以用在参数或者返回值中。并且这个类型的参数或者返回值可以迭代(使用 foreach 遍历元素)

    <?php
    function iterator(iterable $iter)
    {
        foreach ($iter as $val) {
            //
        }
    }
    

    多异常捕获

    <?php
    try {
        // some code
    } catch (FirstException | SecondException $e) { // 处理多个异常不用为多个异常写多个 catch
        // handle first and second exceptions
    }
    

    支持为负的字符串偏移量

    就是所有的字符串函数偏移量都可以为负数,负数表示偏移量从字符串的最后一位往前数

    ext/openssl 支持 AEAD

    AEAD 是一个加密标准

    [AEAD算法浅析](http://tcca.crypto.cn/thread.aspx?ID=2839  )

    HTTP/2 server push support in ext/curl

    当用户的浏览器和服务器在建立链接后,服务器主动将一些资源推送给浏览器并缓存起来,这样当浏览器接下来请求这些资源时就直接从缓存中读取,不会在从服务器上拉了,提升了速率。

    http server push

    参考:

    7.1新特性

  • 相关阅读:
    Java Scanner
    Java 继承
    什么叫异常?什么叫错误? 如何捕获异常? 如何抛出异常? 说说finally和final的区别! 什么是JDK?什么是JRE?说说它们之间的区别? 说说字符常量和字符串常量的区别
    数据分析三剑客之Pandas时间序列
    Css样式布局之Flex弹性盒子布局
    memcached的安装和使用
    Flask 第十八话之Restful API
    Flask 第十七话之信号
    Flask 第十六话之钩子函数
    Flask 第十五话之请求上下文及全局全局存储g对象
  • 原文地址:https://www.cnblogs.com/wudanyang/p/10647869.html
Copyright © 2011-2022 走看看