PHP での演算子のオーバーロード
PHP 愛好家は、特に配列機能に関して、演算子のオーバーロードの実現可能性について疑問に思うことがよくあります。特に、カスタム配列クラスの [] 演算子をオーバーロードしたいという要望が頻繁にあります。
[] 演算子のオーバーロードは可能ですか?
従来の演算子のオーバーロードは直接行うことはできません。 PHP でサポートされている PHP5 では、実行可能な回避策を提供する SPL ArrayObject クラスが導入されています。
オーバーロードに ArrayObject を使用する
ArrayObject クラスを拡張することで、「オペレータの動作をカスタマイズした「fake」配列。簡単な例を次に示します。
<code class="php">class MyArray extends ArrayObject { public function offsetSet($i, $v) { echo 'Appending ' . $v; parent::offsetSet($i, $v); } } $a = new MyArray; $a[] = 1;</code>
出力:
Appending 1
この拡張 ArrayObject を使用すると、offsetSet メソッドをカスタマイズして追加のアクションを実行できます。配列要素に値を割り当てるとき。
その他の注意事項:
ArrayObject は解決策を提供しますが、これは真の演算子のオーバーロード メカニズムではないことに注意することが重要です。これは、offsetSet メソッドの事前定義されたセマンティクスに準拠しています。
以上がPHP でカスタム配列クラスの [] 演算子をオーバーロードできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。