2016-05-11 2 views
2

私は最近、PHP 7で導入された新しいタイプのヒントを調べ始めました。これは、私のアプリケーションのいくつかに追加するのに本当に素敵で便利な追加でしたので、私はそうしました。引数と戻り値のヒント。PHP7 - ヒントのタイプを信頼できるか?

私は、2つの引数に対して数学を実行し、整数を返す基本的な関数を持っています。

function addTwo(int $a, int $b): int { 
    return $a + $b; 
} 

予想引数は整数であるべきであり、我々がうまくいけば、関数からの整数値を受信しなければならない、しかし、これは常に保証されているか、さらに検証が両方の引数が整数であることを保証するようis_intよう関数内が行われるべきです?

+1

は、なぜあなたはそれを試してみて、表示されないのですか? –

+0

私はいくつかのテストを行ったことがありますが、常に保証されているのか、違う可能性のあるユースケースがあるのか​​、無効な結果を返すのか不思議です – mhvvzmak1

+1

関数に与えるものが整数でない場合、エラーがあるか、またはintが返されます。 – skrilled

答えて

3

条件によって異なります。たとえば、あなたの例では、転送ラインは成功しませんが、pass floatは問題ありません。それは静かにintに変換されます。

宣言(strict_types = 1)を記述する必要があります。

strict_types = 1は、最初の行に直接宣言したファイルにのみ適用できますが、回避することはできません。

厳密な型指定も戻り値の型宣言に影響します。 デフォルトの弱モードでは、返された値は、それらの型がまだない場合は、正しい型の に強制的に変換されます。強モードでは、返された の値が正しい型でなければなりません。そうしないと、TypeErrorは になります。

Returning values

+0

私はファイル内でstrict_typesがtrueと宣言されていれば、実際の関数を実行しないという意味の無効な引数の呼び出しに失敗しました。私が特に関心を持っている主な理由は、最初は関数が失敗してしまい、無効なデータ型を使って特定のタスクを実行したときに、関数の途中ではなく型エラーが発生するからです。 – mhvvzmak1

+0

引数の処理時に型エラーが発生した場合、関数本体は実行されません。 – Andrea

関連する問題