0

私は自作の PHP フレームワークを使用しています。これは主に pear と Zend のコンポーネントに大きく基づいていますが、最近Composerでいくつかのより優れたコンポーネントが登場しています。

アプリが成長するにつれて、コンポーネントを切り替えるのが難しくなり、プログラムを別の方法で設計できる方法はないかと考えています。抽象クラスの反対のようなコンポーネントを使用できるようにする方法で。

私は、独自のクラスを作成する方法が必要だと考えています。そのクラスは、pear や zend に接続して、インターフェイスや抽象クラスを身に着けているかのようにそれらのクラスを使用します。もちろん、彼らは実際の作業を行っており、私は彼らにリンクするだけです.

仮説として、私が pear Config/Lite を使用していた場合、これは ini ファイルと配列ファイルでのみ動作し、現在は pear config または Zend config に切り替えて、データベースにデータを保存する利点を得たいと考えている場合、簡単な方法があるはずです。それらが実装するものはまったく同じであるため、すべてのコードを変更せずに切り替える方法。

pears Net/URL/Mapper を使っていたので質問させていただきます。これは悪くないのですが、ディスパッチも処理してくれるものを見つけ、活発に開発されています。また、このような状況は今後も続くと確信しています。

4

2 に答える 2

2

ファサード デザイン パターンのようなものを探すか、委任/合成を使用します。ただし、ファサードのようなものを使用すると、抽象化のレイヤーを追加すると、不要な複雑さが生じる可能性があることに注意してください。いくつかの php デザイン パターン、特にオブジェクトの委譲/構成を読んで、それが自分のケースにどのように適合するかを感じることをお勧めします。

于 2012-07-11T17:21:20.143 に答える
1

この IMO にはコンポジションを使用する必要があります。ライブラリ内のクラスで、残りのコードが依存する独自のパブリック インターフェイスを公開します。コンポーネントの基盤をたとえば PEAR から Zend に変更した場合は、元のすべてのパブリック メソッドが以前のバージョンを尊重していることを確認してください。interface必要に応じてキーワードを使用してこれらのインターフェイスを形式化できますが、それはこの回答の範囲を超えています;)

于 2012-07-11T17:22:03.667 に答える