9

簡単な質問: Benjamin Eberlei によるこのブログ投稿 ( http://www.whitewashing.de/2013/06/27/extending_symfony2__controller_utilities.html )で説明されているように、コントローラー ユーティリティ サービス クラスと同様の特性を持つコードをどこに置くべきですか? ?

暫定的に、src/ProjectName/Library に配置しました。

環境

次の点に注意しました。

  • このロジックは特定の bundle に属していません。実際、作成するすべてのバンドルに適用されます。
  • バンドル内のコントローラはこのライブラリ コードを拡張または利用するため、このロジックは通常、バンドルの一部ではなく、アプリケーション固有のライブラリに属します。

テーマは似ているが、正確には求めていなかった質問への回答をいくつか見つけました

ここでの SO だけに関する私の調査に基づいて、この質問はいくらか踏みつぶされたようですが、以前に尋ねられた質問は、私が実際に何を求めているかを回避していると思います。とにかく、次のオプションがあるようです。

  • これらの種類の拡張機能をバンドルに入れる- 私が開発している機能の種類は基本的にフレームワーク コードを拡張するものであるため、該当しません。
  • すべてのライブラリ コードが配置されるプロジェクト用のベンダー ディレクトリを作成する- これが実際にベスト プラクティスである場合、基本的には、composer のプライベート リポジトリを介してライブラリを利用できるようにする必要があることを意味しますが、それはつまり、別のコードベースを維持する必要があります。
  • src/Company/SomeNamespace にある疑似コネクタ バンドルのようなものを作成します。これでうまくいくかどうかはわかりませんが、SF のベスト プラクティスに沿っている場合は、調べてみます。さらに遠く。

繰り返しになりますが、簡潔にするための質問: Symfony 2 でジェネリックなグローバル機能を提供するクラスをどこに配置すればよいでしょうか?

よろしくお願いします。

4

2 に答える 2

2

Composerリポジトリに関するこのドキュメントは優れたリファレンスであり、Composer をサポートしていないパッケージに関するドキュメントは、探しているものです。

また、バンドルをフォークして元のバンドルをオーバーライドする必要がある場合によく使用されるVCS に関するドキュメントにも注目したいと思います (かなりの回数使用しました)。

次のことができます-パッケージングシステムなどは必要ありません。URL を使用してコンピューターからアクセスできるように、パッケージを zip として配置するだけです。

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "my/package",
                "version": "1.0.0",
                "dist": {
                    "url": "https://github.com/my/package/archive/master.zip",
                    "type": "zip"
                },
                "autoload": {
                    "psr-0": {
                        "My\\Package\\": "src/"
                    }
                }
            }
        }
    ],
    "require": {
        "my/package": "1.0.0"
    }
}

パッケージが PSR-0 をサポートしていない場合は、オプション "classmap"を使用する必要があります。それ以外の場合、パッケージが PSR-0 をサポートしている場合は、オプション psr-0 を使用する必要があります

于 2013-11-12T05:42:05.253 に答える