PHP7.1新特性

1. 可为空(Nullable)类型

参数以及返回值的类型现在可以通过在类型前加上一个问号使之允许为空。当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是null

#php5
function($a = null){
  if($a===null) {
    return null;
  }
  return $a;
}
#php7+
function fun() :?string
{
  return null;
}

function fun1(?$a)
{
  var_dump($a);
}
fun1(null);//null
fun1('1');//1

2. void 类型

返回值声明为 void 类型的方法要么干脆省去 return 语句。对于 void来说,NULL 不是一个合法的返回值。

function fun() :void
{
  echo "hello world";
}

3. 类常量可见性

class Something
{
    const PUBLIC_CONST_A = 1;
    public const PUBLIC_CONST_B = 2;
    protected const PROTECTED_CONST = 3;
    private const PRIVATE_CONST = 4;
}

4. iterable 伪类

这可以被用在参数或者返回值类型中,它代表接受数组或者实现了Traversable接口的对象.

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

5. 多异常捕获处理

一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用

try {
    // some code
} catch (FirstException | SecondException $e) {
    // handle first and second exceptions
}

6. list支持键名

$data = [
    ["id" => 1, "name" => 'Tom'],
    ["id" => 2, "name" => 'Fred'],
];

// list() style
list("id" => $id1, "name" => $name1) = $data[0];
var_dump($id1);//1

7. 字符串支持负向

$a= "hello";
$a[-2];//l

8. 将callback 转闭包

Closure新增了一个静态方法,用于将callable快速地 转为一个Closure 对象。

<?php
class Test
{
    public function exposeFunction()
    {
        return Closure::fromCallable([$this, 'privateFunction']);
    }

    private function privateFunction($param)
    {
        var_dump($param);
    }
}

$privFunc = (new Test)->exposeFunction();
$privFunc('some value');

9. http2 服务推送

对http2服务器推送的支持现在已经被加入到 CURL 扩展

PHP7.1变更

1. 传递参数过少时将抛出错误

过去我们传递参数过少 会产生warning。php7.1开始会抛出error

2. 移除了ext/mcrypt拓展

内容来自网络,PHPer技术栈收集,如有侵权,请告知。

本文分享自微信公众号 - PHPer技术栈(Bule_sky-W),作者:PHPer技术栈

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP7.+系列新特性和新变更

    组合比较符号用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1,比较规则延续常规比较规则。对象不能进行比较

    ITer.996
  • PHP7.2新特性

    扩展文件不再需要通过文件加载 (Unix下以.so为文件扩展名,在Windows下以 .dll 为文件扩展名) 进行指定。可以在php.ini配置文件进行启用

    ITer.996
  • 小程序的登录与静默续期

    每一个有数据交互的小程序,都会涉及到登录、token 等问题,openid 又是什么呢?怎么使用静默续期,来提升用户体验呢?

    ITer.996
  • 图解Java常用数据结构

    最近在整理数据结构方面的知识, 系统化看了下 Java 中常用数据结构, 突发奇想用动画来绘制数据流转过程.

    淡定的蜗牛
  • Elasticsearch 空值处理实战指南

    Accepts a string value which is substituted for any explicit null values. Defaul...

    铭毅天下
  • Java 中的 Optional

    从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerExcept...

    java乐园
  • 二叉树遍历

    OPice
  • Github项目推荐 | visdat - 数据初步探索性可视化工具

    visdat - Preliminary Exploratory Visualisation of Data

    AI研习社
  • Python学习 Day 3 字符串 编码 list tuple 循环 dict set

    >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)

    统计学家
  • 用数据全面解读新型冠状病毒疫情趋势

    花了一天的时间做了个浙江省疫情的数据分析仪表盘,我们就根据这个数据仪表盘来对浙江的疫情做个大概的解读。

    王佩军

扫码关注云+社区

领取腾讯云代金券