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/2 server push support in ext/curl

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

http server push

参考:

7.1新特性

php 7.1 新特性解析的更多相关文章

  1. C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)

    因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...

  2. c++学习书籍推荐《深入理解C++11 C++11新特性解析与应用》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <深入理解C++11:C++11新特性解析与应用>编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑.系统.深 ...

  3. Apache入门篇(三)之apache2.4.33的新特性解析与虚拟主机实战

    1.http 2.4新特性 新特性: (1) 在编译时可以将多个MPM构建为可加载模块,可以在运行时通过LoadModule指令配置所选的MPM: (2) 2.2版本的event MPM在实验阶段,到 ...

  4. 最全的 Swift 4 新特性解析

    转自: http://www.jianshu.com/p/f35514ae9c1a WWDC 2017 带来了很多惊喜.Swift 4 也伴随着 Xcode 9 测试版来到了我们的面前,很多强大的新特 ...

  5. [Android 新特性] 改进明显 Android 4.4系统新特性解析

    Android 4.3发布半年之后,Android 4.4随着新一代Nexus5一起出现在了用户的面前,命名为从之前的Jelly Bean(果冻豆)换成了KitKat(奇巧).这个新系统究竟都有怎样的 ...

  6. [Android 新特性] 15项大改进 Android 4.4新特性解析

    腾讯数码讯(编译:刘沙) 终于,Android系统迎来了久违的重大更新——Android 4.4 KitKat,并与新旗舰Nexus 5同时问世.那么,新的系统究竟都有怎样的改进.是否值得升级呢,下面 ...

  7. HBase2.0新特性解析

    作者 | 个推大数据运维工程师 行者 升级背景 个推作为专业的数据智能服务商,在业务开展过程中存在海量的数据存储与查询的需求,为此个推选用了高可靠.高性能.面向列.可伸缩的分布式数据存储系统--HBa ...

  8. ElasticSearch7.3学习(三十)----ES7.X SQL新特性解析及使用Java api实现sql功能

    一.ES7 sql新特性 1.1 数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期 四个字段 PUT /tvs PUT /tvs/_mapping { "properties&quo ...

  9. GreenDao3.0新特性解析(配置、注解、加密)

    Greendao3.0release与7月6日发布,其中最主要的三大改变就是:1.换包名 2.实体注解 3.加密支持的优化 本文里面会遇到一些代码示例,就摘了官方文档和demo里的例子了,因为他们的例 ...

随机推荐

  1. Git 分支模型

    翻译自:https://nvie.com/posts/a-successful-git-branching-model/ 在这篇文章中,主要介绍 Git 分支模型.不会谈论任何项目的细节,只讨论分支策 ...

  2. Spring boot 配置文件详解 (properties 和yml )

    从其他框架来看 我们都有自己的配置文件, hibernate有hbm,mybatis 有properties, 同样, Spring boot 也有全局配置文件. Springboot使用一个全局的配 ...

  3. Visual Studio Code-批量在文末添加文本字段

    小技巧一例,在vs code或notepad++文末批量添加文本字段信息,便于数据信息的完整,具体操作如下: Visual Studio Code批量添加"@azureyun.com&quo ...

  4. Agent Job代理 执行SSIS Package

    摘要: 在使用Agent Job时, 运行SSIS包的Run as账号,必须有SSIS中connection manager的连接权限. 如果没有连接权限,可以用创建proxy账号,并确保proxy账 ...

  5. MongoDB安装与使用体验

    1.获取并安装 具体的安装包可以到官方网站下载:http://www.mongodb.org/downloads 我看着教程就下载了linux版本吧,也不是很复杂.包的体积有点大. 安装过程比较简单, ...

  6. ASP.Net Core on Linux (CentOS7) 共享第三方依赖库部署

    背景: 这周,心情来潮,想把 Aries 开发框架 和 Taurus 开发框架 给部署到Linux上,于是开始折腾了. 经过重重非人的坑,终于完成了任务: Aries on CentOS7:mvc.a ...

  7. BASE64编码原理分析脚本实现及逆向案例

    在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理你又了解多少?今天小编带大家了解一下Base64编码原理分析脚本实现及逆向案例的相关内容.   01编码由来 数 ...

  8. PHP全栈学习笔记16

    <?php $fileName = "php大师.test.php"; //补充程序,显示文件名(不包括扩展名) $start = strrpos($fileName, &q ...

  9. linux-Navicat 连接数据库 报错10060 & Navicat连接报错1146

    1.mysql数据库设置远程连接权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;[回 ...

  10. java常用API的总结(1)

    本篇是对于这一段时间以来接触到的常用api的一些总结,便于以后的查阅.... 一.正则表达式 对于正则表达式,我的感觉就是当我们在做某些题的时候正则表达式会省去我们很多的时间,并且正则表达式的使用格式 ...