我知道在PHP中int和integer之间没有太多差异。我一定是错的。
我将一个整数值传递给一个只在此值上具有int的函数。像这样: -
$new->setPersonId((int)$newPersonId); // Have tried casting with (int) and intval and both
我有另一面: -
public function setPersonId(int $value) {
// foobar
}
现在,当我跑步时 - 我收到消息: -
“PHP Catchable致命错误:传递给setPersonId()的参数1必须是int的实例,整数给出”
我尝试使用(int)和intval()进行调用。
有什么想法吗?
答案 0 :(得分:14)
PHP中的类型提示仅适用于对象而不适用于标量,因此PHP期望您传递“int”类型的对象。
您可以使用以下方法作为解决方法
public function setPersonId($value) {
if (!is_int($value)) {
// Handle error
}
}
答案 1 :(得分:-2)
要将值显式转换为整数,请使用(int)或(整数)强制转换。但是,在大多数情况下,不需要强制转换,因为如果运算符,函数或控制结构需要整数参数,则会自动转换值。也可以使用intval()函数将值转换为整数。
答案 2 :(得分:-3)
确保将PersonID
属性定义为int而不是整数:
private int $personId;
而不是
private integer $personId;