2017-12-19 65 views
1

symfonyの4ドキュメントの状態:Symfony 3バンドルアプリケーションをSymfony 4バンドルレスにアップグレードするにはどうすればいいですか?セクション<a href="https://symfony.com/doc/4.1/setup/flex.html#upgrading-existing-applications-to-flex" rel="nofollow noreferrer">Upgrading Existing Applications to Flex</a>、で

  • src/src/{App,...}Bundle/から元のソースコードを移動し(App\...であるように、高度なすべてのPHPファイルの名前空間を更新しますIDEはこれを自動的に行うことができます)。
  • 最初の部分は、 "をsrc/{App,...}Bundle/から元のソースコードの移動" が明らかです。特に提案した構造について、私には不明である「src/にしてApp\...するすべてのPHPファイルの名前空間を更新する」、しかし第二部

    sf3-project/ 
    ├── src/ 
        ├── AppBundle/ 
         ├── Controller/ 
          ├── MyFirstController.php 
          └── MySecondController.php 
         └── ... 
        └── ApiBundle/ 
         ├── Controller/ 
          ├── MyFirstController.php 
          └── MySecondController.php 
         └── ... 
    

    :私たちは、このようなディレクトリ構造を理解することができます。

    私が理解したように、それぞれのController/ディレクトリの内容を1つのディレクトリにコピーすることをお勧めします。もしそうなら、同じ名前のコントローラーを扱う方法は?以前のバンドルの接頭辞を持つサブディレクトリを名前として追加する必要がありますか?

    Admin/ディレクトリの下にController/のためにsymfony demo projectがそれを示唆しているようです。

    以前のディレクトリ構造を次のようにアップグレードする必要がありますか。

    sf4-project/ 
    ├── src/ 
        ├── Controller/ 
        │ └── ... 
        ├── ... 
        └── Kernel.php 
    

    私たちは、このSF4-プロジェクト例では、ドキュメントのように、層構造によってパッケージを次の気づくことができます。また、パッケージを機能構造で簡単に使用できるかどうかも疑問です。

    ので、機能構造によって層とパッケージの両方によってパッケージのsymfonyの4との提案の方法は何ですか?

    +4

    この質問は、すでに何回も頼まれており、明確な答えはありません。私が言うことの1つは、あなたがすべてに入り込み、すべてをリファクタリングする前にある種の明確な利益を得ていることを確認することです。バンドルのアプローチはまだS4で正常に動作します。 – Cerad

    +0

    @Cerad、この質問は既にどこに尋ねられているのですか(私はそうではないと思います)?あなたはそれを共有できますか?明確な答えがなくても、それを読むのは面白いかもしれません。ありがとう。 – Kwadz

    +0

    https://stackoverflow.com/questions/47594542/symfony-4-how-to-organize-folder-structure-namely-your-business-logic – Cerad

    答えて

    1

    のSymfonyとバンドル

    symfonyの2は "バンドルはsymfonyの枠組みの中で第一級市民である" 述べました。だから、すべてがあなたのアプリであってもバンドルだったのは、ちょっと心強いフレームワークでした。

    後で良いこととして、バンドルはアプリケーションの再利用可能なコンポーネントだけにすることをお勧めしますが、コードを整理するためにバンドルを使用しています。

    これは、多くの開発者がデフォルトのバンドル構造を何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も何度も複製し続けていることを意味しています。アーキテクチャについて考える必要がないので、コマンドを実行すると、すべてのフォルダ構造とコントローラが生成されます。

    symfonyバンドル(よく設計され、他のフレームワークと互換性があります)を見れば、少なくとも2つのパッケージがあることがわかります。 1つはコード、クラス、サービスなどであり、これをsymfony内ですべて設定する別のパッケージです。例:他のフレームワークと

    • シンプル再利用性:教義、JMS /シリアライザ、KnpMenuなど

      バンドル以下のsymfony

      私はバンドルに以下のsymfonyを動かすの目標であると信じています: Laravel、Silex ?, Zend

    • あなたが解決しようとしているプロジェクトに最適なアーキテクチャを考えて設計しましょう。

    symfonyの新しいバージョンがデフォルト/デモのアーキテクチャとして持っているものをそのままコピーするためにSymfonyバンドルから離れていくことは、まったく役に立たないでしょう。

    私からのアドバイスです:あなたのコードを整理する方法をsymfonyの4

    計画のデフォルト/推奨設定を忘れて:それは簡単に開発するために維持するために、あなたのコードを入れて、あなたのパッケージやライブラリと場所を定義します、維持し、テストする。

    パッケージとライブラリの依存関係を最小限に抑えてください。

    独自のトレードオフを決めてから、リファクタリングする必要がある場合はそれを行います。

    自分のアーキテクチャを計画するのが面倒ではない、または後でやりたい場合は、まだそれをリファクタリングしないでください。ソフトウェアアーキテクチャについて

    チェックアンクルボブのビデオは:https://www.youtube.com/watch?v=HhNIttd87xs

    関連する問題

     関連する問題