あなたが説明したことから、グローバル定数を使用する代わりに receive を使用するサービスを作成することをお勧めしHOST
ますUSER
。PASSWORD
つまり、その情報を parameters.yml に保存し、バンドルの service.yml にこれらのパラメーターを使用してサービスを作成し、最後に基本的にodbc呼び出しをラップするサービスクラスを作成します。
このようにして、symfony のドキュメントで提案されているように parameters.yml を追跡していないと仮定して、機密データ (ユーザー、パスワード) を git-repo から遠ざけることができ、サービスにアクセスできる場所ならどこからでも簡単にサービスにアクセスできます。このようなコンテナ:
$this->getContainer()->get('acme_demo.teradata_service')
parameters.yml:
parameters:
teradata_host: localhost
teradata_user: username
teradata_password: password
Acme\DemoBundle\Resources\config\services.yml:
services:
acme_demo.teradata_service:
class: Acme\DemoBundle\Service\TeradataService
arguments:
- %teradata_host%
- %teradata_user%
- %teradata_password%
Acme\DemoBundle\Service\TeradataService:
class TeradataService
{
public function __construct($host, $user, $password)
...
}
さらに進んで、service.yml で teradata サービスをプライベートにし、TeradataService にアクセスする他のサービスを作成することもできます。このようにして、deleopers がサービスに直接干渉するのではなく、ObjectManagers を介してのみ干渉することを確認できます。
Acme\DemoBundle\Resources\config\services.yml:
services:
acme_demo.teradata_service:
public: false
class: Acme\DemoBundle\Service\TeradataService
arguments:
- %teradata_host%
- %teradata_user%
- %teradata_password%
acme_demo.another_service:
class: Acme\DemoBundle\Service\ServiceAccessingTeradata
arguments:
- @acme_demo.teradata_service
この方法では、サービスが teradata 接続に直接バインドされないため、Acme\DemoBundle\Service\TeradataService を別のものに簡単に置き換えることができます。