5

我知道 PHP 中的 int 和 integer 之间没有什么不同。我一定是错的。

我将一个整数值传递给一个仅在该值上具有 int 的函数。像这样:-

$new->setPersonId((int)$newPersonId); // Have tried casting with (int) and intval and both

我的另一面:-

    public function setPersonId(int $value) {
        // foobar
    }

现在,当我跑步时-我收到消息:-

“PHP 可捕获的致命错误:传递给 setPersonId() 的参数 1 必须是 int 的实例,给定整数”

我尝试使用 (int) 和 intval() 进行调用。

有任何想法吗?

4

3 回答 3

14

PHP 中的类型提示仅适用于对象而非标量,因此 PHP 期望您传递“int”类型的对象。

您可以使用以下解决方法

public function setPersonId($value) {
    if (!is_int($value)) {
        // Handle error
    }
}
于 2013-01-10T13:47:45.463 回答
-2

要将值显式转换为整数,请使用 (int) 或 (integer) 强制转换。但是,在大多数情况下不需要强制转换,因为如果运算符、函数或控制结构需要整数参数,则会自动转换值。也可以使用 intval() 函数将值转换为整数。

http://php.net/manual/en/language.types.integer.php

于 2013-01-10T13:49:39.560 回答
-3

确保该PersonID属性定义为 int 而不是整数:

private int $personId;

代替

private integer $personId;
于 2013-01-10T13:50:14.070 回答