zoukankan      html  css  js  c++  java
  • 投票通过,PHP 8 确认引入 Union Types 2.0

    关于是否要在 PHP 8 中引入 Union Types 的投票已于近日结束,投票结果显示有 61 名 PHP 开发组成员投了赞成票,5 名投了反对票。

     

    还留意到鸟哥在投票中投了反对票~)

    因此根据投票结果,官方已确认将会在 PHP 8 中引入 Union Types 2.0。

    关于 Union Types 的具体讨论可在 GitHub 查看,下面我们来简单了解一下 Union Types(联合类型)。

    根据官方的介绍,Union Types(联合类型)支持接收多个不同类型的值,而不仅仅是单一类型。PHP 目前已经支持两种特殊的联合类型:

    • Type or null,使用特殊的?Type语法

    • array or Traversable,使特殊的iterable类型

    不过 PHP 目前尚不支持任意的联合类型。如要使用,需通过 phpdoc 注释的帮助,示例如下:

    根据数据统计的结果,在开源生态以及 PHP 自身的标准库中使用联合类型非常普遍。官方表示,如果 PHP 能支持联合类型,将会允许我们将更多类型信息从 phpdoc 迁移至函数签名,这具有以下常见的优点:

    • 类型实际上是强制执行的,因此可以及早发现错误。

    • 因为它们是强制性的,所以类型信息不太可能变得过时或遗漏边缘情况。

    • 在继承过程中会检查类型,以执行里氏替换原则(Liskov Substitution Principle)

    • 可通过反射获得类型信息。

    • 语法比 phpdoc 简洁。

    泛型之后,联合类型可以说是目前类型声明系统中最大的“缺口”。

    提案

    联合类型使用 T1|T2|… 语法,可在所有接受的类型中使用:

    支持的类型

    联合类型支持 PHP 当前支持的所有类型:空类型、可空联合类型、false pseudo-type、重复和冗余类型。

    类型语法

    除特殊void类型外,PHP 的类型语法现在可以通过以下语法来描述:

    • 以上是文章全部内容,有需要学习交流的友人请加入Swoole交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!

    点此加入该群

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/heyue0117/p/11942396.html
Copyright © 2011-2022 走看看