2012-02-28 12 views
3

これまで私が行ってきた学校Webプロジェクトでは、3層アプローチでアプリケーションを構築しました。 データレイヤ、アプリケーション、およびプレゼンテーションレイヤ。 私はこのアーキテクチャをpythonとjavaで使用しています。私はPHPでもこのアーキテクチャを使いたいと思います。 私はレイヤ間の通信にかなり厳格でした。これらは割り当ての要件であり、私は一度mySQLからMongo dbに切り替えることを試みたときにかなり簡単でした。データアクセスオブジェクトの関数内でコードを変更するだけでした。Symfony PHPで3層アーキテクチャを実現

私が前に言ったように、今はもっと大きなアプリケーションをPHPで書いてみたいと思い、Symfony2 Frameworkをダウンロードしてインストールしました。これはMVCフレームワークです。私の意図は、MySQLの初期設定でアプリケーションをテストして、Redisで切り替えてテストすることです。

私の質問は次のとおりです。 フレームワークの機能とすべての「おいしさ」を使用して、3層アーキテクチャアプリケーションを作成することができます。

答えて

3

Symfony2は、それ自体がMVCフレームワークではありません。それは一緒にうまく動作する疎結合のコンポーネントです。これについてリード開発者からblog postがあります。

バンドルの細かさを選択することができます。たとえば、純粋なドメインオブジェクト、ビジネスロジック、リポジトリ用のインターフェイス、DAOなどを自由に組み合わせてバンドルを作成できます。オプションでORMのマッピング設定を提供することもできます。今では、データアクセス戦略のバンドルを作成することができます。バンドルはdoctrineで動作するバンドル、レディスはレポジトリインターフェースを実装するバンドルです。

ファイングレインバンドルの構造については夢中になるかもしれませんが、単純なアプリケーションの場合は、これらのすべてを/srcの下に置くか、そこに実装されているすべてのデータアクセス戦略を使ってバンドルを作成し、バンドルの構成

他のバンドルのアプローチを勉強することは、ベストプラクティスに慣れ親しむのにも役立ちます。FOSCommentBundleまたはFOSUserBundleは、開始するのに適しています。

+0

ありがとう、本当にいくつかのことを理解するのに役立った。今私はsumfony2に飛び込む必要があります –

1

トリックは、データレイヤー(別名ビジネスオブジェクト)をサービスにまとめます。アプリケーション(コントローラとも呼ばれます)は、ユーザーの入力に基づいてこれらのサービスとやりとりし、結果をプレゼンテーションレイヤーに渡します。

サービスを慎重に構築すれば、コントローラやプレゼンテーションに影響を与えずにデータベースレイヤーをスワップアウトできます。

関連する問題