質問

私は、データベース内のテーブルごとに別々のクラスを有するデータアクセス層を有しています。各クラスは、テーブル内の行を参照するオブジェクトは、それらは、作成、更新、削除、および機能をフェッチ有することができます。彼らはすべてDBObjクラスを拡張します。私の質問は、私がSELECT * FROM tableするクエリを作成したいと言うと、機能にすることを持っています。これを置くのに最適な場所はどこですか?ビジネスレイヤまたはグループ内のすべての関連機能それぞれのデータ層のクラスで?そのPHPでそれはMySQLを使用して、重要な場合ます。

役に立ちましたか?

解決

データ層にSQLクエリを置きます。

SELECT * FROM tableようなクエリの場合、あなたはモデル自体、またはモデルマネージャオブジェクトのメソッドのクラスメソッドは、スタイルの問題であることを確認するかどうか。

しかし、ビジネス・ロジックは、データベーススキーマの任意の詳細から抽象化されなければなりません。ビジネス層は、ちょうどそのデータを取得するために使用されようとしている特定のクエリを気にすることなく、モデルのすべてのインスタンスのデータ層を依頼することができる必要があります。

他のヒント

私はちょうどあなたの質問を見つけた、と私は別の視点を持ち込む考えました。 ORMフレームワークとして定義されてほとんどの時間、データ抽象化レイヤーを構築するあなたは、ほとんどのアプリケーションで(すべてのを言うことはありませんが、それはそれに近いです)する必要があります。

慎重にかかわらず、データアクセス層(DAL)は、あなたのアーキテクチャのアプローチに応じて、あなたのドメイン・レイヤーやビジネスロジック層と混同してはなりません。あなたがこの主題に深く取得したい場合は、私はすべての開発者は、あなたが Martin Fowler氏の記事を探すことができなければならないことだと思うするまた、あなたはこののブログを読むことができますポスト私はM.ファウラーほど重要ではありません、しばらく前にやったが、私は問題にいくつかの反射を作っています。

敬具、 デビッド

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top