新的类型 - 对象

A new type, object, has been introduced that can be used for (contravariant) parameter typing and (covariant) return typing of any objects.

以上是官方解释,出现了两个没什么印象的词 - 逆变和协变,查一下引出了里氏替换,之后又把 OOP 原则复习了一遍。

逆变和协变放在这里和里氏替换是类似的,而且逆变和协变的含义也是一样的,只是逆变放在参数上,协变放在了返回值上。(最近总感觉这些繁多的名词总是表达类似的含义)(逆变也可能是范围扩大)

1
2
3
4
5
6
7
8
9
// 官方示例
<?php

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

test(new StdClass());

通过名称加载扩展

应该是指配置了路径以后,就不用单个都列出来了。可以在php.ini文件中启用。

抽象方法复写

这个只有在一个抽象类继承另一个抽象类时候可以。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 官方示例
<?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;
}

Sodium 成为核心扩展

这个库是和加密、解密、签名、哈希等相关的,以后可能会看一看。

用 Argon2 做密码哈希

目前认为该算法在安全性和成本效益方面优于当今使用最广泛的密码散列函数 Bcrypt。除了密码散列函数外,该算法还适用于与现代电子(加密)货币一起使用的工作证明操作。

从周四发布的PHP 7.2 开始,Argon2 v1.3已经被添加到 PHP 内核中,开发人员可以通过 password_hash() 函数使用它。

1
2
3
4
5
6
7
8
9
// Argon2i with default cost factors
password_hash('password', PASSWORD_ARGON2I);

/*
PASSWORD_ARGON2I
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
PASSWORD_ARGON2_DEFAULT_TIME_COST
PASSWORD_ARGON2_DEFAULT_THREADS
*/

同时 MCrypt 从核心扩展移动到了 PECL里。