2016-05-30 13 views
0

私はsymfony 3を使用してWebアプリケーションを開発しています。私はバンドルで私のアプリケーションを分けた。しかし、時には他のバンドルのエンティティが必要です。だから私の質問です - 私はエンティティをいくつかのCommonBundleに置くべきですか、それとも他のバンドルのエンティティを使用するのもいいですか?Symfony。エンティティを配置する場所

+1

どのような種類のバンドルがありますか?バンドルが非常に小さい場合は、symfonyのベストプラクティスで推奨されているように、1つのAppBundleを作成するほうがよいでしょう。http://symfony.com/doc/current/best_practices/creating-the-project.html#application-bundles –

+0

広範な(そして意見に基づく)質問を投稿する代わりに、開発しなければならないアプリケーションのタイプをより明確に記述する方が良いでしょう。私は、symfonyがどのように動作するのか、結局どのようにバンドルを構造化する(そして使用する)のかを自分で理解するためには、ドキュメントの中でさらに深く理解する必要があると思います。 –

答えて

2

別のバンドルからエンティティをインポート(使用)しても問題ありません。バンドル間で一方向の依存関係が作成されることに注意してください。他のバンドルでも、最初のバンドルからエンティティ(または何か他のもの)もインポートすると、双方向依存関係になります。この場合、バンドルは互いに依存しており、別のバンドルを変更することなくバンドルを削除することはできません。

この場合、共通のバンドルがお手伝いしますとは思いません。私自身もいくつかのプロジェクトでCoreBundleのように作成しましたが、ほとんどの場合はインターフェイスや抽象クラスが含まれていましたが、他のバンドルに依存することはありませんでした。

また、バンドルからビジネスコードを切り離してアプリケーション用にバンドルを作成することもお勧めします。 symfonyをはじめて使うのであれば、そうすることはお勧めできません。

+1

かなりこれ。実際には、設計されたバンドルを他のアプリケーション間で再利用する必要があるかどうかによって異なります。それらのバンドルを可能な限り依存関係のないものにしたい場合は、しかし、OPのバンドルが特定のアプリケーションにしか関係しない場合は、すべてを単一のバンドルに投げ込んだり、バンドル間でエンティティを再利用したりしても問題ありません。 –

-3

我々は次のようにプロジェクト

内の任意のバンドル内のエンティティにアクセスするためのサービスを行うことができます - :

$view = $this->container->get('test_project.list.view'); 

注意コントローラで、このように、このエンティティにアクセス

services: 
    test_project.list.view: 
     class: TestProject\TestBundle\Entity\ProfileSchool 
     arguments: 
      - "@service_container" 

test_project.list.viewには、任意の名前、そのデモだけを指定できます。

希望すると、これが役立ちます。

問題がある場合はお知らせください。

+2

エンティティにコンテナを注入しますか?これは一つのひどい例です。 – tomazahlin

+0

なぜ使用できないのですか? –

+0

まだ文書を使用していますか? –

関連する問題