【问题标题】:Can php have a mixed type hinting?php可以有混合类型的提示吗?
【发布时间】:2017-06-28 05:35:33
【问题描述】:

假设我的函数想要同时接受字符串和整数。如果是字符串,我会在之后将其转换为 int。

喜欢

function func(int|string $a) {
    echo is_string($a)?intval($a)+1:$a+1;
}

func(1344);
func('1344');

【问题讨论】:

  • try function func($a) { return (intval($a)+1); } php 并不关心你发送给他的参数是什么数据类型。
  • @LouisLoudogTrottier。那不是我想要的。我只是想扩展类型提示功能,将类型限制为 2 种类型,除了 1。
  • 按原样,PHP 不提供此功能。无论哪种方式,您都必须创建自己的函数。否则,只需修改您的 PHP 以处理数据。

标签: php type-hinting


【解决方案1】:

您要求的功能处于提案阶段。见PHP RFC: Union Types

更新

Mixed 类型在 2020 年 11 月发布的PHP 8 中最终被接受和引入。

【讨论】:

【解决方案2】:

PHP 8.0 接受了混合:https://wiki.php.net/rfc/mixed_type_v2

class B
{
    public function foo(mixed $value) {}
}

【讨论】:

    【解决方案3】:

    联合类型 RFC 已被 PHP 8 接受并实现。

    混合类型RFC 正在投票中,但在撰写此答案时可能会通过。

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 2016-09-07
      • 2011-10-28
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      相关资源
      最近更新 更多