doctrine.entitymanager.orm_default
Eighterまたは aliasを使用して、サービス マネージャーからデフォルトの教義エンティティ マネージャーを取得できますDoctrine\ORM\EntityManager
。
$serviceLocator->get('Doctrine\ORM\EntityManager');
ZF2 での依存性注入のベスト プラクティスは、サービス マネージャーに登録したサービス ファクトリを使用することです。これに関する情報はたくさんあります。
とにかく手順を説明します。
あなたのサービス
namespace MyNamespace
class MyService
{
public function __construct(EntityManager $em)
{
$this->em = $em;
}
}
Factoryで工場
を定義します。module.php
class Module
{
public function getServiceConfig()
{
return array(
'factories' => array(
'MyNamespace\MyService' => function($serviceLocator) {
return new MyService($serviceLocator->get('Doctrine\ORM\EntityManager');
}
)
);
}
}
この例ではファクトリにクロージャを使用しましたが、専用のファクトリ クラスを使用することをお勧めします。
これで、完全に構成されたサービスをサービス マネージャーから取得できます。
$serviceManager->get('MyNamespace\MyService');
コントローラーでこのサービスを使用する場合は、上記と同じ方法で、このためのファクトリを定義する必要があります。小さな違いが 1 つだけあります。これは、すべてのコントローラーが個別の pluginManager (特定のタイプのクラスを作成する専用の serviceManager) によって管理されるためです。getControllerConfig
module.phpのメソッドを使用して、コントローラ プラグイン マネージャでファクトリを定義できます。
これをmodule.phpに追加します
public function getControllerConfig()
{
return array(
'factories' => array(
'MyNamespace\Controller\MyController' => function($serviceLocator)
{
$rootLocator = $serviceLocator->getServiceLocator();
$service = $rootLocator->get('MyNamespace\MyService');
return new MyController($service);
}
)
);
}
お役に立てれば。