Reputation: 3896
I understood there wasn't much, if any different between int and integer in PHP. I must be wrong.
I'm passing a integer value to a function which has int only on this value. Like so:-
$new->setPersonId((int)$newPersonId); // Have tried casting with (int) and intval and both
The other side I have:-
public function setPersonId(int $value) {
// foobar
}
Now, when I run - I get the message:-
"PHP Catchable fatal error: Argument 1 passed to setPersonId() must be an instance of int, integer given"
I have tried casting in the call with (int) and intval().
Any ideas?
Upvotes: 6
Views: 7661
Reputation: 2725
Make sure that PersonID
property is defined as int not integer:
private int $personId;
instead of
private integer $personId;
Upvotes: -3
Reputation: 1
To explicitly convert a value to integer, use either the (int) or (integer) casts. However, in most cases the cast is not needed, since a value will be automatically converted if an operator, function or control structure requires an integer argument. A value can also be converted to integer with the intval() function.
http://php.net/manual/en/language.types.integer.php
Upvotes: -2
Reputation: 4351
Type hinting in PHP only works for objects and not scalars, so PHP is expecting you be passing an object of type "int".
You can use the following as a workaround
public function setPersonId($value) {
if (!is_int($value)) {
// Handle error
}
}
Upvotes: 14