0

私の構造の1つにSymfony2を使用しています。モジュールとモジュールに関連するさまざまなファイルを、他のモジュール ファイルから抽象化しておきたいと考えました。

だから例えば。フロントエンドアプリケーションがあります。フロントエンド アプリケーションの下には、ユーザー、ギャラリー モジュールがあります。ユーザーに関連するすべてのファイルを 1 か所に、ギャラリーに関連するすべてのファイルを 1 か所に保管したいと考えています。このようにして、Symfony1.4 で提供されているように、モジュール レベルで抽象化を実現します。

以下は、ここまでに達成したフォルダー構造です。

    web/
       admin.php
       frontend.php

    apps/
        autoload.php # this autloads the common libaries/vendors for all application eg. CommonBundle
        admin/
               AppKernel.php
               AppAutoload.php # load application specific libraries
               bootstrap.php.cache
               config/
               cache/
               .
               .
               .
            frontend/
               AppKernel.php
                AppAutoload.php
               bootstrap.php.cache
               config/
               cache/
               .
               .
               .

    src/
        Admin/
            UserBundle/
                Controller/
                    UsersController.php
                Entity/
                    User.php
                Repository/
                    UserRepository.php
                Resources/
                    views/
                     indexUserView.twig.html
            DiaryBundle/
                Controller/
                    DiaryController.php
                Entity/
                    Diary.php
                Repository/
                    DiaryRepository.php
                Resources/
                    views/
                     indexDiaryView.twig.html
        Frontend/
            UserBundle/
                Controller/
                    UsersController.php
                Entity/
                    User.php
                Repository/
                    UserRepository.php
                Resources/
                    views/
                     indexUserView.twig.html
            DiaryBundle/
                Controller/
                    DiaryController.php
                Entity/
                    Diary.php
                Repository/
                    DiaryRepository.php
                Resources/
                    views/
                     indexDiaryView.twig.html

上記のフォルダー構造には自信があります。しかし、モジュール レベルではなくアプリケーション レベルでバンドルの作成をサポートしている Symfony2 コミュニティを見つけたので、モジュール レベルでバンドルを作成することの長所と短所を知りたいと思いました。モジュール レベルでの作成で起こりうる落とし穴は何ですか?

モジュールのバンドルを持つことの多くの利点を見ることができます

  1. モジュールのすべてのコントローラー、ビュー、モデルは同じ場所にあり、他のモジュールのコントローラー、モデル、ビューから抽象化されています。このようにして、1 つのモジュールで作業している人は 1 つのフォルダー内でのみ作業する必要があり、module2、つまり Bundle2 で行われている人の作業を気にする必要はありません。

  2. 以下のコマンドを使用して、アプリケーション レベルでキャッシュをクリアすることができます。

    shell> php apps/frontend/console cache:clear

  3. フロントエンド アプリケーションでバンドルを作成する必要がある場合、コマンドは次のとおりです。src/frontend アプリケーションの下に UserBundle を作成します。また、apps/frontend/AppKernel.php 内にバンドル名を登録します。

    shell> php apps/frontend/console generate:bundle --namespace=frontend/userBundle --format=yml

だからすべてがうまくいくようです。しかし、Symfony2 コミュニティはこのアプローチが正しいとは考えていないようです?

私のアプローチの抜け穴を提案してください。

4

2 に答える 2

1

そんなことはしなくていいと思います…

moduleSymfony2 にはそのようなものはありません。Symfony2 と symfony1 の違いを説明するクックブックの 記事があります。さまざまなアプリケーションについて話していると思います。別のアプリケーションを使用できますが、推奨されません。別のプロジェクトを作成してバンドルを共有する必要があります。

あなたが達成したいこのプロジェクトは、多くのことを壊し、サードパーティのバンドルを使用できなくなると思います。

Symfony2 のプロジェクト構造をより RAD フレンドリーにするために呼び出されたイニシアチブがあります/ありましたKnpRadが、多くの問題があり、このプロジェクトは今のところ死んでいるようです。

彼らのブログからの引用:

現在の実装では、Symfony2 はほぼすべてのリソースをバンドルするためのパスをハードコーディングしています。つまり、フォルダー構造を変更するには、これらの Symfony2 コマンド、拡張機能、コンパイラ パスをすべてオーバーライドする必要があります。これにより、コードベースに分裂が生じ、一部のバンドルで BC ブレークが導入されました。

于 2012-08-30T09:53:46.627 に答える
0

Neetu..Symfony1.4とsymfony2には大きな違いがあります。symfony2に従って、ここでsrcフォルダーの下にアプリケーションを生成する必要があります。アプリケーション名は名前空間になり、名前空間の下にsymfony1.4でモジュールと呼ばれるバンドルを作成できます。コマンドは:

php app / console generate:bundle --namespace = Yournamespace / yourBundle --format = yml php app / console cache:clear --env =prod--no-debug必要に応じてアプリを作成できます。

于 2012-09-12T12:49:17.153 に答える