PHP7.2常用新特性和函数
通过这篇你将了解PHP 7.2
版本中添加的一些新特性和函数。
PHP 7.2是一个LTS版本,他提供了一些新功能和几个较小的核心改进。开箱即用的PHP 7.2
为我们提供了新的哈希,类型提示,类型扩展和显着的性能。你以可以查看官方文档来获取更详细的内容。
这就是PHP 7.2为我们提供的新功能特性:
- 新的对象类型(
object
) - 允许重写抽象方法
- 使用Argon2算法生成密码散列
- 参数类型推导
- 允许分组命名空间的尾部逗号
新的对象类型
这种新的对象类型object
引进了可用于逆变(contravariant)参数输入和协变(covariant)返回任何对象类型。
<?php
class Test
{
public function echo()
{
echo "Hello word";
}
}
function testObject(object $object): object
{
return $object;
}
testObject(new Test)->echo();
允许重写抽象方法
当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。
<?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;
}
使用Argon2算法生成密码散列
Argon2是一个导入到PHP 7.2的新哈希,Argon2
是一个密钥派生函数,被选为2015年7月密码哈希竞赛的获胜者。
我们通过password_
开头的函数使用它。以下是暴露出来的常量:
- PASSWORD_ARGON2I
- PASSWORD_ARGON2_DEFAULT_MEMORY_COST
- PASSWORD_ARGON2_DEFAULT_TIME_COST
- PASSWORD_ARGON2_DEFAULT_THREADS
<?php
password_hash('password', PASSWORD_ARGON2I);
// or
$options = ['memory_cost' => 1<<11, 'time_cost' => 4, 'threads' => 2];
password_hash('password', PASSWORD_ARGON2I, $options);
参数类型推导
允许我们省略类型提示。因此,您可以覆盖它或其他任何东西。这不会再导致错误,这是一个很好的功能,便于编码,当涉及到覆盖时,您不必限制自己的特定类型提示。
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // type omitted for $input
}
允许分组命名空间的尾部逗号
命名空间可以在PHP 7中使用尾随逗号进行分组引入。
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};
在7.2之前它是一个错误的语法。
废弃的内容
-
__autoload()
请使用spl_autoload_register() 来代替__autoload()。
-
create_function()
请使用更好匿名函数。
-
parse_str()
不再需要第二个参数.
-
each()
使用
foreach
来代替 -
assert()
将不再接收字符串参数, 最好提供 bool 的表达式。
查看更多的废弃功能请查看RFC
上面已经介绍重要的一些PHP7.2更新功能。如果你需要升级迁移你可以查看官方文档
,查看PHP7, PHP7.1的更新特性。