11

Symfony2で開発されたアプリケーションがあります。現在、その構造は次のとおりです。

  • FrontBundle - アプリケーションのビューと UI に関連するすべてが含まれます。
  • PersistanceBundle - アプリケーションの永続層に関連するすべてが含まれています。
  • DomainBundle - アプリケーションおよびサービスのエンティティに関連するすべてが含まれます。

この構造大丈夫?または、バンドルはフォーラム機能のように使用されます - ForumBundle - フォーラムに関連するすべてのレイヤー ( controllerservicesdomain logic、およびpersistence ) が含まれます。

4

3 に答える 3

17

バンドルを使用してアプリを構築する方法について厳格なルールはありませんが、Symfony2 で 1 年近く開発した結果、次のようになりました。

1 つのアプリ固有のバンドルを使用します。最初は、、、、 、 などの複数のバンドルから始めました。最終的にはあまり便利ではないことが判明したため、アプリ固有のバンドルを 1 つだけに切り替えました — .CommonBundleUserBundleMainBundleBlogBundleContactBundleAppBundle

サブ名前空間を使用して、コードをきれいに整理できます。たとえば、バックエンド コントローラーはサブ名前空間に移動しAppBundle\Controller\Backendます。

1 つのアプリ固有のバンドルについて話していることに注意してください。具体的なアプリに固有のものであり、他の場所で再利用する意味はありません。再利用可能なものの個別のバンドルを開発し、ベンダーのインフラストラクチャに配置することは引き続き可能です。

非 Symfony 固有のものをバンドルから除外します。Symfony2 固有でない場合、モデルとサービス層クラスをバンドルする必要はありません。詳細については、この質問と私の回答を参照してください。

于 2012-04-05T09:01:43.380 に答える
2

プロジェクトのアプリケーション構造を編成するには、さまざまな方法があります。しかし、バンドルを配布して symfony のベストプラクティスに従いたい場合、バンドルは UI の分離よりも多くの機能です。バンドルの詳細については、ドキュメントを参照してください。

次の構造を持つ2つのプロジェクトがあり、どちらも有効だと思います:

  1. 各機能のバンドルを作成します: BlogBu​​ndle、StoreBundle など、および一般的なものを含む AppBundle。バックエンド/フロントエンドの分離なし。ほとんどの場合、バックエンドがフロントエンドである SaaS です。
  2. フロントエンド用に 1 つ、バックエンド用に 1 つのバンドル。エンティティとドメイン固有のもののみを共有します。アプリケーションには 2 つの異なる目的があります。
于 2012-04-05T09:09:43.250 に答える