PHP での演算子のオーバーロード: ArrayObject による救済
PHP は演算子のオーバーロードをネイティブにサポートしていませんが、同様の機能を実現する回避策はあります。 Array クラス作成のコンテキストで [] 演算子をオーバーロードするためのアプローチの 1 つは、PHP5 以降のバージョンの SPL ArrayObject クラスを活用することです。
ArrayObject と Operator のオーバーロード
ArrayObject は、カスタムの配列のようなクラスを作成するための基盤を提供します。 ArrayObject を拡張することにより、必要な演算子のオーバーロード動作を備えた「偽の」配列を作成できます。次の例を考えてみましょう。
<code class="php"><?php class CustomArray extends ArrayObject { public function offsetSet($i, $v) { echo 'appending ' . $v . "\n"; parent::offsetSet($i, $v); } } $a = new CustomArray; $a[] = 1; // Output: appending 1</code>
この例では、CustomArray は ArrayObject を拡張し、offsetSet メソッドをオーバーライドして、要素を配列に追加する前に必要な操作を実行します。その結果、[] 演算子を使用して値を割り当てると、カスタム動作がトリガーされます。
以上がArrayObject を使用して配列の演算子のオーバーロードを PHP でシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。