私は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. PHPで文書を保存する単純なHTML DOM
- 2. Symfony2でサービスを保存する場所
- 3. AppleScript単純なファイルを保存するスニペットを開く?
- 4. MySQL Workbenchのファイルを単純なXMLとして保存することはできますか?
- 5. NexusやArtifactoryは単純なtar.gz成果物を保存できますか?
- 6. 私のアンドロイドアプリに単純なオブジェクトの配列を保存するには?
- 7. なぜこの単純なMongoose.jsプログラムは、「入れ子にされた」保存中にフリーズしますか?
- 8. Symfony2:PHPStormで注釈のオートコンプリートを有効にするにはどうすればいいですか?この単純なコードに続い
- 9. どこに画像を保存するのですか?
- 10. ここでは単純なループ
- 11. は、ここでは、単純なTCPテスト
- 12. ユートピアでの単純なユーザーチェックは、これは安全ですか?
- 13. なぜこの単純なコードがEXC_BAD_ACCESSを引き起こすのですか?
- 14. この単純な例でPrologがクラッシュするのはなぜですか?
- 15. なぜこの単純なJQueryコードでエラーが発生するのですか?
- 16. Javaで単純なデータセットを保存/追加/削除するのに最適な手段
- 17. どのように私は、これは単純な質問ですけど、MATLAB
- 18. この単純なコードで重複を削除するにはどうすればよいですか?
- 19. このドロップダウンの最も単純なJQueryプラグインは何ですか?
- 20. 単純なMVCのモデルですか?
- 21. 単純なsqliteの例ですか?
- 22. symfony2のcookieを手動で保存する(FOSUserBundle)
- 23. この単純なレールプロジェクトをHerokuで動かすにはどうすればいいですか?
- 24. この単純なjavascriptは何ですか?
- 25. iOSどこに再ダウンロードできる画像を保存するのですか?
- 26. エンティティフレームワークコードは、まずデータをどこかに保存しますが、どこにわからないのですか?
- 27. 特定のノードにアクセスする単純なパスが存在するかどうかを判断しますか?
- 28. この単純なgridview表示プログラムのパフォーマンスを改善するにはどうすればよいですか?
- 29. リボンツールバーボタンの値を単純なテキストフィールドに戻すことはできますか?
- 30. どうすればこのように動作する単純なPHPフックシステムを構築できますか?