14

私はCakePHPを調査しようとするJavaプログラマーです。現在、アプリケーションの構造/設計に問題があります。アプリケーションのコアロジックをどこに置くべきか理解できませんでした。

JavaEEで開発している場合、一般的なアプローチは次のようになります。

  • モデルクラスは、データエンティティ(製品、人など)を表す単純なBeanです。ほとんどの場合、ゲッター/セッターを使用したデータ構造に似ています。

  • コントローラクラスは、必要なデータを集約し、それらを専用のビューテンプレートに挿入してユーザーに送信する、十分に単純なクラスです。

  • DAO(DataAccessObject)またはリポジトリクラスは、エンティティをデータベースにロードおよび格納できるクラスです。

  • サービスクラスは通常、特定のビジネスロジックメソッドを含むシングルトンです。これらは、コントローラー、他のサービス、またはスケジュールされたアクションによって呼び出されますが、データをフェッチまたは変更するためにDAO/リポジトリメソッドを呼び出します。

たとえば、エンティティPersonProductありOrder、ユーザーが商品を選択して[カート/バスケットに入れる]をクリックすると、new OrderこれPersonが作成され、これProductに追加される必要があります(これは、不良債務者ではなく、存在Orderすることを確認できます)。店舗などで)-この作業はすべて、何らかのコントローラーによって呼び出されるメソッドで実行されます。PersonProductOrderService

通常、すべてのサービスとコントローラーが必要なサービスなどにリンクできるように、ある種のIOC(制御の反転)が使用されます。

今、私はこれがすべてCakePHPでどのように行われるかについて少し戸惑っています。このビジネスロジックなどはどこに置くべきですか?

4

3 に答える 3

8

CakePHP では、モデル層はと呼ばれるアクティブなレコードインスタンスのコレクションから構成されますAppModel。それらは、ストレージ関連のロジック(通常は DAO やリポジトリに配置するもの)とビジネス ロジック(通常は「モデル」に入るもの) を組み合わせます

(サービスからの) その他のドメイン関連のロジックは、コントローラーの一部になります。

CakePHP でドメイン ビジネス ロジック実装する方法を知りたい場合は、アクティブ レコードパターンを称賛する記事を参照してください。

個人的な意見
CakePHP と CodeIgniter は、PHP で最悪のフレームワークの 2 つです。
彼らは悪い習慣でいっぱいです。

実際、正しい MVC を実行している場合、モデル レイヤーにはすべてのビジネス ロジックとそれに関連するすべてが含まれます。モデル層は、DAO、リポジトリ、ドメイン オブジェクト(「モデル」と呼ばれるもの)、およびサービスで構成されています。

Java ベースのコードに関するあなたの説明は、あなたがその方向に進んでいることを示していますが、CakePHP はそれに少しでも近づいていません。

繰り返しになりますが、MVCに関する私の理解が間違っている可能性があります。

于 2012-08-13T03:24:58.943 に答える
1

コントローラーには、Web アプリケーションである全体に関連するロジックのみを含める必要があります。ビジネス ロジックはモデルに属します。これは、多くの CakePHP アプリケーションで見られる基本的な間違いの 1 つであると思います。実際にはモデルに属するコントローラーに多くのロジックが組み込まれています。

于 2012-08-12T17:24:51.867 に答える
0

CakePHP で。「M」は、ドメイン モデルではなく、単なるデータ モデルの集まりです。私の意見では。CakePHP は RAD 開発用に作られています。エンタープライズ アプリケーションには適していません。

私の意見ですが。

于 2015-01-02T03:34:54.863 に答える