2

したがって、、、および組み込みのインターフェイスを実装するIteratorことArrayAccessで、オブジェクトがループで使用されたとき、またはプロパティが配列インデックス()であるかのようにアクセスされた場合にCountable、オブジェクト内で何が発生するかを制御できます。foreach$object['id']

たとえば、必要に応じて、データベースのフィールドを$object['version'] += 1自動的にインクリメントできるように設定できます。version

不足しているのは、にキャストするobjectことarrayです。次の場合に何が起こるかを制御できるインターフェイスまたはクラスはあります(array) $objectか?どんなにあいまいであっても、組み込みのインターフェースやクラスはありますか?例:すべてのパブリックオブジェクトプロパティをダンプする通常のオブジェクトから配列への変換の代わりに(array) $object戻りたい場合はどうなりますか?$this->propertyArray

注:配列とオブジェクトの外部の違いを可能な限り最小限に抑えることが目的であるため、メソッド名による呼び出しを要求するようなもの$object->toArray()はカウントされません。

4

2 に答える 2

1

toArray()は__toString()のような魔法の関数ではないため、ありません。キャスティングが機能する場所

$foo = (string) $myObect;

toArray()を指定する必要があり、その中に配列を返します。将来的には__toArray()が来る可能性があります。

于 2011-02-16T14:17:05.743 に答える
0

このようなメソッドを追加できます

public function toArray() {
    return get_object_vars( $this );
}

ここを参照してください。または、SplFixedArray::toArrayを確認してください。

于 2011-02-16T14:36:41.803 に答える