Zend Framework 2 と Doctrine 2 の上に基づいてアプリを開発しています。
2 日前、ドクトリンがエンティティ リスナーをバインドしてライフサイクル コールバックを管理できるようになったことを発見しました (prePersist、preUpdate、postLoad など)。
私は最初のモジュールで宣言されたエンティティを持っています(そしてアノテーション付きのDoctrine用に設定されています)。
別のモジュールで、エンティティにプログラムでバインドする EntityListener を作成しました。
最初のモジュールは2番目のモジュール(リスナーが宣言されている場所)から独立したままにする必要があるため、エンティティで注釈「@EntityListeners({"MyListenerClass"})」を使用することは絶対にできません
実際に、リスナーのモジュール bootstrap で次のようにしてバインドしようとしました。
$em = $e->getApplication()->getServiceManager()->get('Doctrine\ORM\EntityManager');
/* @var $em \Doctrine\ORM\EntityManager */
$entityListener = new EntityListener();
$entityListener->setServiceManager($e->getApplication()->getServiceManager());
$em->getConfiguration()->getEntityListenerResolver()->register($entityListener);
いくつかの出力ログで、この方法が機能しないことがわかりました (私のエンティティにエンティティ リスナーがあるとは一度も言いませんでした)。おそらく、このコードは不完全です
構成 (Annot、XML、または YAML) を使用せずにバインドする方法はありますか?