PHP7.2 的新特性

2019-05-13 16:53:07 阅读:8 编辑

1. 新的对象类型

这种新的对象类型,object, 引进了可用于逆变(contravariant)参数输入和协变(covariant)返回任何对象类型。

<?PHP

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

test (new StdClass ());

2. 通过名称加载扩展

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

3. 允许重写抽象方法 (Abstract method)

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

<?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_ 开头), 以下是暴露出来的常量:

PASSWORD_ARGON2 I PASSWORD_ARGON2_DEFAULT_MEMORY_COST PASSWORD_ARGON2_DEFAULT_TIME_COST PASSWORD_ARGON2_DEFAULT_THREADS

5. 允许分组命名空间的尾部逗号

命名空间可以在 PHP 7 中使用尾随逗号进行分组引入。

<?PHP

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