2011-10-31 6 views
9

Symfonyフレームワークのバージョン2が新しくなりました。私はv1でいくつかのプロジェクトを作ったが、今は新しいバージョンの周りに頭を抱えようとしており、それは機能だ。 私はBundlesのコンセプトを読んだが、目的はまだ私にはあまり明確ではない。複雑なWebアプリケーションでのSymfonyバンドルの正確な説明

大きなWebアプリケーション(CRMなど)があるとします。バンドルはどのように見えますか? NewsBundle(ニュースレターを送信する)、ContactManagementBundle(連絡先を管理する)、UserBundle(ユーザーとその権限を編集する)ですか。

または、EmailBundle(電子メールトラフィック全体を処理する)、CRMBundle(すべてのCRMコードを入力する)、PermissionsBundle、ApiBundleのようにカットアップしない方がよいでしょうか。

答えて

21

私はこれを次のように考えています。バンドルは、プロジェクトの特定の機能または同様の機能のセットを表す必要があります。

最初の例は、各バンドルの目的がより明確に定義されているため、2番目の例よりもバンドルを使いやすくしています。すべてのために1つのCRMBundleを使用することは可能ですが、Symfonyのコードを整理する機能を実際に利用することはありません。さらに、ニュースレターコードを新しいプロジェクトに移植したいが、すべてののCRMコードではない場合は、NewsletterBundleをコピーしてCRMBundleをコピーしてから、プルーニングするほうが簡単です。

symfony2プロジェクトについて考えてみると、symfony 1.xについて多くのことを忘れてしまっていることがあります。たとえば、symfony 1では、プロジェクトのフロントエンドとバックエンドのアプリケーションを構築するのが一般的でしたが、各アプリケーションには明らかにプロジェクトのその部分に固有のロジックが含まれていました。したがって、フロントエンドとバックエンドの両方のアプリでニュースレターコントローラを使用できます。 Symfony2では、ニュースレターバンドルを1つだけ使用するほうがいいですが、2つのコントローラー(おそらく、 'frontend'と 'backend'という名前)があります。この場合も、すぐにコードを再利用できるようになります。

+0

ありがとう、それは物事をより明確にします。 – tomvo

+2

"Symfonyのコード整理能力"?申し訳ありませんが、symfonyはバンドルの作成を強制するだけで、コンベンションに基づいた自動検出に結びついています(これはおそらく "コードの編成"に翻訳されます)。 – Florian

+1

私はsymfonyで何かを学びました。バンドルの下にあるものを整理することは(一般的に)アプリケーション開発者としては悪い考えです。あなたは結局、フレームワークに結びついてしまいます。代わりに、フレームワークがないかのようにコードを整理します。 Symfony2は非常に優れています。柔軟性があり、実行できます。 – Florian