5

関数パラメーターが配列などの特定のデータ型であることを要求する方法はありますか? たとえば、次のようなものです。

function example(array $array){}

もしそうなら、それはすべてのデータ型で機能しますか? これを行う方法を教えてくれる良いリソースはありますか?

4

2 に答える 2

6

タイプヒンティングをご覧くださいhttp://php.net/manual/en/language.oop5.typehinting.php

于 2012-05-02T13:16:28.787 に答える
3

編集:はい、配列でヒントを入力できるので、回答を編集してそれに応じて変更しました。

あなたがしたいことは、type-hintingと呼ばれます。、、などintのヒントの基本データ型を入力することはできません。またはオブジェクトとインターフェイスを使用してタイプヒントを指定できます。stringboolarray

function example_hinted1(array $arr) {

}

function example_hinted2(User $user) {

}

呼び出すexample_hinted1(5)と PHP の致命的なエラー (例外ではない) が生成されますが、配列を渡して呼び出すことはまったく問題ありません。

関数へのいくつかの引数が基本型からのものであることを確認する必要がある場合は、関数内のコードでこの動作をシミュレートできます。

function example($number) {
  if (!is_int($number) {
    throw new Exception("You must pass an integer to ".__FUNCTION__."()");
  }
  // rest of your function
}

したがって、これらのスニペットは機能します。

example(1);

$b = 5 + 8;
example($b);

これらは例外をスローしますが:

example('foo');
example(array(5, 6));
example(new User());
于 2012-05-02T13:19:27.050 に答える