私はSymfony2を初めて使っていますが、私はいくつかの簡単な問題に直面しましたが、どのように管理するのかは分かりません。単純なサードパーティのクラスを1つ使用する必要があります。プロジェクト構造にどこにどのように格納するのかはわかりません。私はバンドルにサービスを保存する必要がありますか、それともベンダのディレクトリに保存する必要がありますか? Symfonyがサポートするベンダーではないライブラリをそこに保存するのは悪い習慣ではありませんか?symfony2で単純なサードパーティクラスをどこに保存するのですか?
6
A
答えて
4
通常、あなたのプロジェクトにはComposerが含まれています。あなたのクラス用のComposerパッケージがあるかどうかを調べるには、packagistを見てください。それ以外の場合は、コンポーザーで要求することはできません。
Composerはクラスをvendor
ディレクトリに置きます。そこにすべてのベンダー(第三者図書館)を置く必要があります。 Composerのオートローダーが自動ロードできるように、そのディレクトリーにそれらを入れる場所を見てください。
その後、その特定のクラスのバンドルを作成することをお勧めします。そこにサービスを作成するのがベストプラクティスです。
// src/Acme/FooBundle/DependencyInjection/AcmeFooExtension.php
<?php
namespace Acme\FooBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
class AcmeFooExtension extends Extension
{
/**
* this method loads the Service Container services.
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
// load the src/Acme/FooBundle/Resources/config/services.xml file
$loader->load('services.xml');
}
<!-- src/Acme/FooBundle/Resources/config/services.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<!-- Loads the \Foo class as a acme_foo.foo service -->
<service id="acme_foo.foo"
class="\Foo"
></service>
</services>
</container>
:あなたのクラスがある場合たとえば、あなたは
Foo
Foo
サービスをロード
Acme\FooBundle
を作成します
1
Symfony自体はサードパーティのライブラリをvendorsフォルダに保存します。 good practiceあなたのサードパーティのクラスをそこに置くこともあります
あなたがそれを行う方法がわからない場合は、おそらくthis questionが役立ちます。
1
私は、サービスコンテナを使用することが良い習慣になると思います。とにかく、サービスコンテナは、サードパーティの障害を保存し、疎結合を保存するために作られています。
docsには、サービスコンテナの使用方法と使用方法が記載されています。
幸運。
関連する問題
- 1. Symfony2のは、この単純なコードで例外
- 2. PHPで文書を保存する単純なHTML DOM
- 3. Obj Cの単純なNSStringをFirebaseに保存するにはどうすればよいですか?
- 4. Symfony2でサービスを保存する場所
- 5. 単純なチャットアプリケーションでさまざまな種類の「メッセージ」を保存する
- 6. この単純なコードをどのように模倣するのですか?
- 7. 単純なストレージ変数を保存してアドオンをアンインストールする
- 8. AppleScript単純なファイルを保存するスニペットを開く?
- 9. Symfony2のサービスで異なる種類のファイルを保存する
- 10. MySQL Workbenchのファイルを単純なXMLとして保存することはできますか?
- 11. NexusやArtifactoryは単純なtar.gz成果物を保存できますか?
- 12. 私のアンドロイドアプリに単純なオブジェクトの配列を保存するには?
- 13. Symfony2:PHPStormで注釈のオートコンプリートを有効にするにはどうすればいいですか?この単純なコードに続い
- 14. javascriptで保存したファイルをどこに保存する
- 15. なぜこの単純なMongoose.jsプログラムは、「入れ子にされた」保存中にフリーズしますか?
- 16. ebxが単純な関数のスタックフレームに保存されるのはなぜですか?
- 17. リソースファイルをどこに保存するか
- 18. どこに画像を保存するのですか?
- 19. この単純なSQL文の意味はなんですか?
- 20. この単純なシナリオでデッドロックは可能ですか?
- 21. ユートピアでの単純なユーザーチェックは、これは安全ですか?
- 22. ここでは単純なループ
- 23. は、ここでは、単純なTCPテスト
- 24. なぜこの単純なコードがEXC_BAD_ACCESSを引き起こすのですか?
- 25. この単純な例でPrologがクラッシュするのはなぜですか?
- 26. なぜこの単純なJQueryコードでエラーが発生するのですか?
- 27. この単純な例でFrame.tryValuesが失敗するのはなぜですか?
- 28. この単純なクエリがミュールフローで失敗するのはなぜですか?
- 29. Symfony2ファイルシステム - 既存のディレクトリにデータストリームを保存する
- 30. JavaScript WebApiリファレンス:どこに保存するのですか?