1

私は Symfony1.4 を 2 年半以上使用しています。現在、新しいプロジェクトがあり、クライアントはこのプロジェクトに Symfony2 を使用したいと考えています。

Symfony2 を数週間勉強した後、理想的には Symfony1.4 で適切に編成される構造について決定することはほとんどありませんが、Symfony2 で行う完璧な方法を見つけることができません (Symfony2 の経験があまりないためかもしれません)。

  1. プロジェクトには 3 つのアプリケーションがあります。これら 3 つのアプリケーションのバンドルを作成する必要がありますか? または、src/ ディレクトリに 3 つのアプリ フォルダーを作成し、それぞれのアプリケーションの個々のモジュールのバンドルを作成しますか?

  2. 上記の第 1 四半期のアプリケーションごとにバンドルを作成すると、同じバンドル内でモジュールごとのエンティティを整理する方法を見つけることができません。たとえば。モジュールフロントエンド用のユーザー、イベント、カレンダーなどのモジュールがありますが、frontendBundle 内でモジュールを整理するにはどうすればよいですか?

  3. すべてのアプリの共通コードは、Symfony1.4 のルート lib/ フォルダーに保存され、すべてのアプリでアクセス可能でした。この共通コードをどこに置くべきか理解できませんか? vendors フォルダー内にそれがありますか? または vendors フォルダは、Doctrine のようなプラグインされたサードパーティの拡張機能を目的としているだけですか?

Symfony2 の専門家がこれらの疑問を明確にしてくれませんか?

4

1 に答える 1

1
  1. 3 つの異なるバンドルを作成します

  2. 2 つのアプローチがあります。

    a)エンティティ、リポジトリなど(一般的にビジネスロジック)のフラットな構造ですべてを作成します。また、ビュー、構成、変換などについては、コントローラーの構造に基づいて個別の名前空間 (したがってディレクトリ) を作成します。例えば。

    src/
        COMPANY/
            App1Bundle/
                Controller/
                    UsersController.php
                    EventsController.php
                    ...
                Entity/
                    User.php
                    Even.php
                    ...
                Repository/
                    UserRepository.php
                    ...
                Model/
                    SomeServiceRelatedToUsers.php
                    SomeServiceRelatedToEvents.php
                    ...
                Resources/
                    views/
                        Users/
                            someUserView.twig.html
                        Events/
                            someEventsView.twig.html
    

    b) および 2 番目のアプローチ - さまざまなロジック パーツに個別の名前空間を作成します。例えば。

    src/
        COMPANY/
            App1Bundle/
                Controller/
                    Users/
                        UserSpecificController1.php
                        UserSpecificController2.php 
                    Events/
                        EventsSpecificController1.php
                        EventsSpecificController1.php
                     ...
                Entity/
                    Users/
                        User.php
                    Events/
                        Even.php
                    ...
                Repository/
                    Users/
                        UserRepository.php
                    ...
                Model/
                    Users/
                        SomeServiceRelatedToUsers.php
                    Events/
                        SomeServiceRelatedToEvents.php
                    ...
                Resources/
                    views/
                        Users/
                            someUserView.twig.html
                        Events/
                            someEventsView.twig.html
    

    私は最初のものを好みます。

  3. CommonBundle や sth のように、このために別のバンドルを作成します。ベンダー ライブラリなどの共通コードを作成してから、ライブラリと symfony アプリの間のブリッジとなるバンドルを作成する方法を好む人もいます。

役立つリンクを次に示します。

于 2012-08-30T07:23:44.743 に答える