三分钟了解PHP 7.4新特性-php教程

资源魔 22 0

PHP 7.4中的新性能

  • 公布日期可能正在 2019 年 12 月阁下,尚待确认
  • 短闭包,可完成更简约的单行书写
  • 预加载,以进步功能
  • 类中的类型属性
  • 自界说工具序列化增加一种(反)序列化工具的新办法
  • 改良类型差别
  • 简化 Null 兼并运算符
  • FFI 为 PHP 扩大开发开拓新时机
  • 弃用短开标签
  • 正在数组中支持开展运算符
  • 浏览如下内容理解更多

短闭包 RFC

短闭包完成更简约的单行书写。

array_map(function (User $user) { 
    return $user->id; 
}, $users)
array_map(fn(User $user) => $user->id, $users)

对于短闭包的一些留意事项:

  • 能够拜访父作用域,没有需求 use 要害字。
  • $this 能够像一般的闭包同样应用。
  • 短闭包只能蕴含一行,也就是 return 语句。

你能够正在这里深化浏览它们。

类型属性 RFC

类属性能够提醒类型:

class A
{
    public string $name;

    public Foo $foo;
}

改良的类型差别 RFC

我以前写过 PHP 的类型体系,以是很快乐看到一些 PHP 的外围被改良了。

类型差别是一个值患上博客文章探讨的主题;简而言之:你将可以应用协变量前往类型。。。

class ParentType {}
class ChildType extends ParentType {}

class A
{
    public function covariantReturnTypes(): ParentType
    { /* … */ }
}

class B extends A
{
    public function covariantReturnTypes(): ChildType
    { /* … */ }
}

。。。以及反变量。

class A
{
    public function contraVariantArguments(ChildType $type)
    { /* … */ }
}

class B extends A
{
    public function contraVariantArguments(ParentType $type)
    { /* … */ }
}

Null 兼并运算符 RFC

再也不需求这样做:

$data['date'] = $data['date'] ?? new DateTime();

你能够这样做:

$data['date'] ??= new DateTime();

数组开展运算符 RFC

如今你能够正在数组中应用开展运算符:

$arrayA = [1, 2, 3];

$arrayB = [4, 5];

$result = [0, ...$arrayA, ...$arrayB, 6 ,7];

// [0, 1, 2, 3, 4, 5, 6, 7]

请留意,这仅实用于带数字键的数组。

内部函数接口 RFC

内部函数接口,简称 FFI,容许从用户区挪用 C 代码。这象征着 PHP 扩大能够用纯 PHP 编写。

应该指出,这是一个复杂的话题。您依然需求 C 常识能力正确应用此性能。

预加载 RFC

预加载是 PHP 外围的一个振奋民气的新性能,能够带来不成预估的功能改良。

简而言之:假如您明天应用的是框架,则必需正在每一次申请时加载以及从新编译其文件。预加载容许效劳器正在启动时于内存中加载 PHP 文件,并使它们耐久化可用于一切后续申请(只需不绝电)。

功能晋升当然需求付出价值:假如预加载文件的源文件发作变动,则必需从新启动效劳器(该局部如有贰言,请查看 RFC 具体引见)

自界说工具序列化 RFC

RFC 添加了两个新的魔术办法:__serialize 以及 __unserialize 。这些办法以及 __sleep__wakeup 的没有同的地方曾经正在 RFC 中进行了探讨。

衔接优先级 RFC

假如你书写了相似如下的内容:

echo "sum: " . $a + $b;

PHP 以前会像这样编译它:

echo ("sum: " . $a) + $b;

而 PHP 8 将使它以下编译:

echo "sum :" . ($a + $b);

当正在遇到不圆括号蕴含的 '+' 或 ' - ' 表白式以前有 '.' 的时分,PHP 7.4 会提醒弃用正告。

RFC 投票流程改良

这正在技巧上没有是与 PHP 7.4 相干的更新,但值患上一提的是:RFC的投票规定曾经扭转。

  • 他们将老是需求 2/3 的泰半支持能力经过。
  • 投票工夫没有短,一切RFC必需至多开放 2 周。

参考文献的反思 RFC

像 Symfony 的 var dumper 这样的库重大依赖于反射 API 来牢靠地转储变量。之前,不对参考文献提供适当的反映支持,招致这些库依赖于黑客来检测反映。

PHP 7. 4 增加了 ReflectionReference 处理此成绩的类。

增加 mb_str_split 函数 RFC

此函数提供与 str_split 多字节字符串相反的性能。

永世支持 ext-hash RFC

正如题目所说,此扩大如今可正在一切 PHP 装置中永世支持应用。

默许没有启用 PEAR EXTERNALS

因为 PEAR 再也不支持保护,外围团队决议正在 PHP 7.4 中删除了它的默许装置。

明码哈希注册表RFC

对若何应用散列库进行外部更改,以便用户能够更轻松地应用它们。

弃用ext/wwdx RFC

此数据替换格局从未规范化,如今曾经弃用该扩大。

PHP 短标签被弃用 RFC

短开标签 <? 已被弃用,将正在 PHP 8 中删除了。短申明标志 <?= 没有受影响。

左联系关系三元运算符被弃用 RFC

三元运算符正在 PHP 中有一些希奇的怪癖。此 RFC 为嵌套的三元语句增加了弃用。正在 PHP 8 中,此弃用将转换为编译时谬误。

1 ? 2 : 3 ? 4 : 5;   // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok

向后没有兼容的更改 UPGRADING

晋级PHP版本时,您应该始终查看完好的 UPGRADING 文档。

如下是一些突出显示的向后没有兼容的更改:

  • 挪用 var_dump 一个 DateTimeDateTimeI妹妹utable 实例前面将再也不保存工具的可拜访属性。
  • openssl_random_pseudo_bytes 将正在谬误状况下抛出异样。
  • 测验考试序列化一个 PDOPDOStatement 实例将天生一个 Exception 而没有是一个 PDOException
  • 挪用 get_object_vars() 上的 ArrayObject 实例将前往的属性 ArrayObject 自身,而没有是包装的数组或工具的值。请留意,(array) 强迫转换没有受影响。

更多PHP相干技巧文章,请拜访PHP教程栏目进行学习!

以上就是三分钟理解PHP 7.4新特点的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 新特性 7.4

抱歉,评论功能暂时关闭!