オブジェクト配列の型ヒント
クラスや関数を操作する場合、型ヒントを使用して、予期される引数の型を指定できます。ただし、オブジェクトの配列を関数に渡そうとすると、エラーが発生する可能性があります。この記事では、このような状況に対処する方法について説明します。
この問題を理解するには、次のクラスと関数を考慮してください。
<code class="php">class Foo {} function getFoo(Foo $f) {}</code>
Foo オブジェクトの配列を getFoo に渡そうとすると、エラーが発生します。 :
Catchable fatal error: Argument 1 passed to getFoo() must be an instance of Foo, array given
この問題を解決するには、Foo オブジェクトの配列を表すカスタム タイプを作成できます。 1 つの方法は、ArrayObject を拡張し、offsetSet メソッドを実装して、配列に追加された値が Foo のインスタンスであることを検証するクラスを作成することです。
<code class="php">class ArrayOfFoo extends \ArrayObject { public function offsetSet($key, $val) { if ($val instanceof Foo) { return parent::offsetSet($key, $val); } throw new \InvalidArgumentException('Value must be a Foo'); } }</code>
カスタム ArrayOfFoo 型を使用すると、次のことを保証できます。は Foo オブジェクトの配列を操作し、関数は ArrayOfFoo 引数を受け取ることができます。
もう 1 つのオプションは、Haldayne のようなライブラリを使用して、メンバーシップ要件チェックのボイラープレートを処理することです。
<code class="php">class ArrayOfFoo extends \Haldayne\Boost\MapOfObjects { protected function allowed($value) { return $value instanceof Foo; } }</code>
以上がオブジェクトの配列の型ヒントを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。