【问题标题】:It is possible to require more than one type of function param?是否可能需要不止一种类型的函数参数?
【发布时间】:2015-04-05 03:31:22
【问题描述】:

我有以下 PHP 代码:

protected $number;

public function setIntNumber( int $number ) { /* some operations */ }
public function setFloatNumber( float $number ) { /* the same operations */ }

$number 只能存储 int 或 float 值。我想将这两个函数合并为一个,但主要条件是其他程序员不能输入除 int 或 float 之外的其他参数。我需要这样的东西:

public function setNumber( (int|float) $number ) { /* operations */ }

可以在我的函数声明中完全做到这一点吗?

【问题讨论】:

  • 出于好奇我问:)
  • 我们在谈论PHP-7吗?因为在早期的 PHP 版本中,您不能进行标量类型提示。
  • PHP 版本不高于 5.5
  • 那么我认为您的第一个问题是您不能对标量类型进行类型提示(请参阅:stackoverflow.com/q/29169252/3933332
  • 你的问题不必问,你问的不是必须的。只需放弃类型提示,您就可以交出您想要的任何参数。然后,如果需要,您可以在函数内部测试参数类型。

标签: php


【解决方案1】:

来自manual

类型提示不能用于标量类型,例如 int 或字符串。 也不允许使用资源和特征。

即使你可以使用这些类型,你也不能使用 multiple 类型。最好的办法是检查方法顶部的值并抛出异常。

【讨论】:

    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2014-08-30
    相关资源
    最近更新 更多