【问题标题】:PHP - Force function parameter to integerPHP - 强制函数参数为整数
【发布时间】:2015-05-24 00:33:13
【问题描述】:

在 PHP 中你可以做以下事情:

class Something {// bla bla}

function functionName(Something $object) {
    // Do stuff here  ^^^^^^^^^
}

这可确保函数接收到 Something 类的实例。

我的问题是我想强制执行基本类型。

function functionName(integer $someInt) {
    // Do stuff here  ^^^^^^^
}
functionName(5);

这表示 $someInt 是“不是整数的实例,整数给定”(我的 PHP 版本低于 7.0)。如何强制执行基本类型?

【问题讨论】:

  • php中没有整数关键字
  • 您可以在函数的第一行简单地添加$someInt = (int)$someInt;。这样,您将始终获得整数参数格式。

标签: php function parameters


【解决方案1】:

scalar types 不能这样做,请参阅手册:

还有一段话:

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

但是您可以使用 PHP 7 做到这一点:https://wiki.php.net/rfc/scalar_type_hints_v5

【讨论】:

  • @jeroen 谢谢!,只是要加上引号:D
  • @Rizier123 听起来很有希望 PHP 7 将支持这一点。我已经多次询问该功能,但总是得到像you don't need to typehint scalar types if you understand dynamically typed languages 这样的答案。嗨,看来我是对的! :D
  • @hek2mgl 是的,对此有一些尝试/建议,但我认为它会被添加。 (不知道SPlInt 也是一种有趣的方式;D)
  • 是的,很有趣。更有趣的是,如果 PHP 支持 __toInt() 之类的魔术方法 __toString()。还有一个 RFC。
【解决方案2】:

您不能在 PHP 中键入提示标量类型。唯一的机会是使用包装器类型。为此,SPL 库附带了 SplInt

更新:看起来 PHP 7 提供了该功能。唉,时代变了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多