jmsserializer を介して pre_deserialization で Document の __constructor を実行しようとしていますが、それが機能しない理由がわかりません。
次のような yaml ファイルからシリアライザのメタデータをロードしています。
AppBundle\Document\Campaign:
exclusion_policy: ALL
xml_root_name: campaign
properties:
id:
type: string
expose: true
slug:
type: string
expose: true
name:
type: string
expose: true
callback_methods:
pre_deserialize: [__construct]
実行を逆シリアル化しようとすると:
$object = $serializer->deserialize($jsonString, 'AppBundle\\Document\\Campaign', 'json');
コンストラクター関数に到達できませんが、イベントを他の使用可能なもの (pre_serialize、post_serialize、および post_deserialize) に変更すると、到達できます。
この特定のイベントの処理に関するコードが欠落していると思いますが、他のイベントに影響を与える同じコードをコピーしようとしても機能しません。イベントディスパッチャーなどに登録されていないようです。
私の環境は次のとおりです。
symfony 2.6.3
jms/serializer 0.16.0
jms/serializer-bundle 0.13.0
ありがとう。