JMS/Serialzier ライブラリを使用しています。
リッスンする Event-Subscriber をセットアップし、プロパティを持つEvents::PRE_SERIALIZE
クラスのすべてのオブジェクト インスタンスを異なる通貨に変換します。Price
currency
amount
public function onPreSerialize(PreSerializeEvent $event)
{
$object = $event->getObject();
$class = get_class($object);
switch ($class) {
case Price::class:
return $this->currencyService->convertPrice($object);
}
}
しかし今、私のアプリケーションでは、1 つのコンテナー オブジェクトに属する 1 つの価格EdgeCase
をまったく変換する必要がないというエッジ ケースがあります。
use JMS\Serializer\Annotation\Type;
class EdgeCase {
/**
* @Type("Kopernikus\Price")
* @var Price
*/
private $price; // this one instance should not be handled by the event subscriber
}
ただし、元の状態を維持する必要があります。それでも、オブジェクトがどこから来たのかを区別できないようです。
Price
どのオブジェクトをいつ変換するかを設定できるようにしたいと考えています。