-1

重複の可能性:
プリミティブ値への PHP 型ヒント?

たとえば、私はという関数を作成します

retrieveCount($count){
   return ++$count;
}

簡単な例です。型が整数のみであることを受け入れるように関数を設定するにはどうすればよいですか? Java やその他の言語では、次のものがあります。

public int retrieveCount(int count){
   return ++count;
}

PHPで同じことをする方法はありますか? OOPの場合、PHPにはオブジェクト、配列、インターフェースなどの複雑な構造のタイプヒントがありますが、スカラータイプ(int、string)にはありません。

これは本当にそうで、タイプを指定することはできませんか?

ありがとうございました

4

3 に答える 3

1

PHP には、直接的なスカラー型ヒントの可能性はありません。ただし、関数内の型をチェックして適切なエラーをトリガーすることでエミュレートできます。

function retrieveCount( $count )
{
    if( !is_int( $count ) )
    {
        // I believe E_USER_WARNING is the appropriate error level
        // equivalent to what PHP issues itself on type hint errors
        trigger_error(
            'Argument 1 passed to retrieveCount() must be an integer',
            E_USER_WARNING
        );
    }

    return ++$count;
}
于 2013-01-28T00:57:42.243 に答える
0

これを行う直接的な方法はありませんが、次のように関数内で型を強制できます。

function retrieveCount($count) {
    $count = intval($count);
    return ++$count;
};

類似の機能を見るstrval, floatval...

于 2013-01-28T00:50:33.580 に答える
0

関数が整数型を確実に受け取るようにするには、次のようにis_int()を呼び出します。

function retriveCount( $count ){
  if( !is_int( $count ) )
    return 0; // or whatever you want errors to return

  return ++$count;
}

または、必ずしも数値ではない数値のような文字列を処理できるようにする場合は、次のようにします。

function retriveCount( $count ){
  if( (int)$count != $count )
    return 0; // or err value

  return ++$count; // will be integer type
}

Type Juggling documentationで、戻り値がキャストなしで整数になる理由を読んでください。

于 2013-01-28T00:57:58.633 に答える