PHP7.2新特性

1. 增加新的类型object

function test(object $obj) : object
{
    return new SplQueue();
}

test(new StdClass());

2. 通过名称加载扩展

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

; ini file
extension=php-ast
zend_extension=opcache

3.允许重写抽象方法

当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。

<?php

abstract class A
{
    abstract function test(string $s);
}
abstract class B extends A
{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;
}

4. 使用Argon2算法生成密码散列

Argon2 已经被加入到密码散列(password hashing) API (这些函数以 password_ 开头), 以下是暴露出来的常量

5. 新增 PDO 字符串扩展类型

当你准备支持多语言字符集,PDO的字符串类型已经扩展支持国际化的字符集。以下是扩展的常量:

  • PDO::PARAM_STR_NATL
  • PDO::PARAM_STR_CHAR
  • PDO::ATTR_DEFAULT_STR_PARAM
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);

6. 命名分组命名空间支持尾部逗号

use Foo\Bar\{
    Foo,
    Bar,
    Baz,
};

PHP7.2 变更

1. number_format 返回值

var_dump(number_format(-0.01)); // now outputs string(1) "0" instead of string(2) "-0"

2. get_class()不再允许null。

var_dump(get_class(null))// warning

4. count 作用在不是 Countable Types 将发生warning

count(1), // integers are not countable

5. 不带引号的字符串

在之前不带引号的字符串是不存在的全局常量,转化成他们自身的字符串。现在将会产生waring。

var_dump(HEELLO);

6. __autoload 被废弃

__autoload方法已被废弃

7. each 被废弃

使用此函数遍历时,比普通的 foreach 更慢, 并且给新语法的变化带来实现问题。因此它被废弃了。

8. is_object、gettype修正

is_object 作用在**__PHP_Incomplete_Class** 将反正 true

gettype作用在闭包在将正确返回resource

9. Convert Numeric Keys in Object/Array Casts

把数组转对象的时候,可以访问到整型键的值。

// array to object
$arr = [0 => 1];
$obj = (object)$arr;
var_dump(
    $obj,
    $obj->{'0'}, // now accessible
    $obj->{0} // now accessible
);

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

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP7.1新特性

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

    ITer.996
  • 简述TCP的三次握手过程

    对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭

    ITer.996
  • MySQL 中的四种隔离级别

    数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别。

    ITer.996
  • 分布式通信的几种方式

    目前的分布式架构主要由corba和JavaEE搭建,JavaEE优点是跨平台,开发成本低、周期短,不需要学习IDL语言;CORBA的优点是服务器响应速度更快。决...

    哲洛不闹
  • Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding Network...

    用户1631416
  • Python终级教程!语音识别!大四学生实现语音识别技能!吊的不行

    语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以及只有约十几个单词的词汇量。现代语音识别系统已经取得了很大进...

    猫咪编程
  • 数据分析方法之矩阵思维

    分析问题有没有套路呢?没有,因为一定是具体问题具体分析;但也可以说有套路,因为通过古圣先贤的经验总结,还是为我们留下很多宝贵的思考框架的。

    陈章乐
  • Git异常:Cannot delete the branch 'test&' which you are currently on

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ————————————————————...

    逸鹏
  • 54张手绘PPT看Google如何运作

    大数据文摘
  • Elasticsearch 入门: _bulk 批量导入数据

    王兵

扫码关注云+社区

领取腾讯云代金券