1

私は Symfony 2.0 を使用しており、サードパーティのライブラリが /vendor にあることを理解しています。私が使用している 2 つのサードパーティ クラスがあります。1 つは TCPDF で、もう 1 つは Paypal クラスです。どちらも正式な Symfony2 バンドルはありません。

だから私はここの指示に従って、それらを名前空間化し、/vendor内で使用できるようにしました:

サードパーティのライブラリを Symfony 2 に追加する

これは機能し、コントローラーからアクセスできます。しかし、それが正しいことかどうか、私は再考しています。私がするたびに..

php bin/vendors install --reinstall

..これらのカスタム クラスは、「deps」に Git リポジトリがないため、消えます。これにより、たとえば PagodaBox にデプロイしようとしたときに、実際の問題が発生しました。このコードは、「サードパーティ」が自分のアプリのコードに近いものであるという強い本能を感じます。

それが本当なら、次のようにすべきです:

  • src/MyCompany/MyBundle/Controller/tcpdf.php のコントローラーの隣に座ってください。
  • src/MyCompany/MyBundle/DependencyInjection/tcpdf.php にある他のカスタム作成サービスと一緒にいる
  • 私のバンドルの下にある独自のディレクトリに移動します: src/MyCompany/MyBundle/TCPDF/tcpdf.php

これら 2 つのクラスを /vendor から上記のいずれかに移動した場合、「use」ステートメントを使用してコントローラーからアクセスしますか、それとも「services.yml」で定義する必要がありますか?

これが議論や意見の問題ではないことを願っていますが、私が見逃したガイダンスや、より経験豊富な Symfony2 開発者が知っていることを知らないベストプラクティスです。

Symfony 2.1 の準備が整う前に Composer に切り替えるのは賢明でしょうか?

読んでくれてありがとう。

4

1 に答える 1

4

If you're using deps to manage vendor libraries then you should add the git repo's for those libraries there.

For TCPDF you can use:

[TCPDF]
    git=git://tcpdf.git.sourceforge.net/gitroot/tcpdf/tcpdf
    target=/tcpdf

If you have other libraries that aren't in a public repo then you may want to commit them to your own repo.

The same would hold true for Composer. Just the syntax for adding non-packagist repo's is different.

于 2012-06-04T15:07:20.550 に答える