waxical
waxical

Reputation: 3896

PHP: Converting integer to int - getting error

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

Answers (3)

AlecTMH
AlecTMH

Reputation: 2725

Make sure that PersonID property is defined as int not integer:

private int $personId;

instead of

private integer $personId;

Upvotes: -3

Boris Gavrilman
Boris Gavrilman

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

fin1te
fin1te

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

Related Questions