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 に答える