2

遅延読み込みメカニズムを使用するデータベース抽象化レイヤーを構築したいとします。

レイヤーにルート オブジェクトをロードするように要求すると、レイヤーはその外部表現をロードし、それ自体を構築します。

次に、特定のリンクされたオブジェクトが存在することを何らかの形で識別します。すべてを事前にロードするのはコストがかかる可能性があるため、関連するオブジェクトのプロキシを確立しました。そのようなプロキシは通過できるはずです。

このようなプロキシで最初のメッセージが呼び出されると、その外部表現が読み込まれ、それ自体が構築されます。プロキシへの参照が渡された可能性があるため、作成されたオブジェクトは既存のプロキシ オブジェクトをインプレースで置き換える必要があります。

PHP でオブジェクトを別のオブジェクトに置き換えることはできますか?

4

1 に答える 1

2

オブジェクトがそれ自体へのすべての参照を別のオブジェクトに置き換えることが可能だとは思いません。代わりに、オーバーロードを使用してプロキシ オブジェクトにプロパティ アクセスとメソッド呼び出しを転送させます。ベース プロキシ オブジェクト (例: という名前) でプロキシを実装し、プロキシされたオブジェクトを遅延ロードOOProxyするクラスにこれを拡張します。LazyProxyオブジェクトのタイプを調べる必要がない限り、プロキシへの参照を持つものは、プロキシされたものと区別できません。

于 2011-05-10T21:22:28.400 に答える