2011-07-15 1 views
0

Zend_AMFを使用するときにカスタムディスパッチャーを使用できますか?Zend AMFカスタムディスパッチャー

Zend_AMFのクラス名またはオブジェクトをsetClass()に渡すことができます。

しかし、オブジェクトをsetClassに渡すと、そのオブジェクトのコピーが格納されていないように見えます。その代わりに、クラス名を作成し、オブジェクト自体のコピーをインスタンス化します。

これはyadif依存性注入コンテナを使用しているときに問題になります。オブジェクトは、コンストラクタの依存関係やプロパティの依存関係によってインスタンス化する必要があります。

Zend_Amfディスパッチャはすべてのインスタンス化を行うので、コンストラクタの依存関係やその他の依存関係を自分のオブジェクトに注入できません。

誰もが私はZend_Amfに内のコードのいずれかに触れることなくこれを克服することができる方法についての戦略を持っている場合、それは解決策は、基本的にZend_Amfにラッパーを構築するために偉大な:)

答えて

0

あるだろう。それが書かれている方法は、handleと_handle()メソッドでほとんどのコードをコピーしなければならないということです。私が作成したZend_Amfのインスタンスを指すようにメソッドをいくつか呼び出すように修正する必要がありました。

最後にディスパッチが変更され、ディスパッチャが呼び出され、結果が返されました。

明らかに最も洗練された解決策ではありませんが、Zend_AMFを将来的にはもっと拡張性があり、簡単に修正することができれば幸いです。

現時点では、Zend_AMFの更新版をコードを変更することなく、私の「ベンダー」フォルダに簡単にドロップできます。

関連する問題