1

おおまかにこのようなPHPプロジェクトの戦略パターンを使用しています。この本を参考にデザインパターンを作っています。

攻略パターンサンプル

単一のテーブルで「挿入」、「検索」、「更新」の具体的な戦略クラスを使用して、データベースから単純な挿入、更新、またはフェッチを行うことができます。

ただし、複数のテーブルを使用する JOIN や VIEW などの複雑なクエリになると、これらのクラスは十分ではありません。

カスタム番号を取得できる戦略クラスを作成するにはどうすればよいですか。JOIN または VIEW を使用して 2 つ以上のテーブルからの列の または、代わりにストアド プロシージャを使用する必要がありますか?

現在、各具体的な戦略クラスは次のようになっています。

interface IStrategy {

   public function algorithm(AbstractModel $modelObj, $tablename);

}

class InsertStrategy implements IStrategy{
   public function algorithm(AbstractModel $modelObj, $tablename){
      // construct SQL statement
      // Initialize the Database Object
      // Insert data using PDO
   }
}
4

1 に答える 1

0

通常のビジネス アプリの実行に対する私のアプローチは、"テーブル API" アプローチを避け、ストアド プロシージャを使用して "データ API" を作成することです。ビューを使用して SP をサポートすることもできます。

したがって、CRUD ではなく、有用なデータのチャンクをビジネス レイヤーに提供する SP を記述します。SPで実行できるすべてのフィルター、グループ、並べ替えなどを実行し、PHPビジネスレイヤーにビジネス的なことを実行させます。通常は、通常のデータ アクセス レイヤー (または想像力を少し伸ばすと ORM) を介してすべての SP にアクセスできます。

データ準備を SP の背後に分離することは、サービスの背後にビジネス層を隠すことに似ています。理由と利点はすべて同じように積み重なります。

于 2013-07-29T09:10:06.147 に答える