エンティティにフォロワーを注入するサービスとしてロードされた Redis を使用します。だから私は getFollowers のようなメソッドを持つ User のようなエンティティを持っています。サービスとエンティティを混在させたくないので、Doctrine で postLoad イベントをサブスクライブするリスナーを作成します。
問題は、getFollowers メソッドを呼び出したときにのみサービスを呼び出す方法です。
私のコード...
イベントリスナー:
public function postLoad(LifecycleEventArgs $eventArgs)
{
$redisService = get the service loaded with DIC in constructor.
if ($eventArgs->getEntity() instanceof User) {
$user = $eventArgs->getEntity();
$user->setFollowers($redisService->getFollowers($user));
}
}
ユーザー エンティティ:
public function setFollowers(Array $followers) {
$this->followers = $followers
}
私の問題は、クラス ユーザーのすべてのロードで、RedisService が呼び出されてロードされ、$user->getFollowers でのみサービスを呼び出したいことです。