我正在使用JMS/Serialzier 库。
我已经设置了一个事件订阅者,它监听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);
}
}
然而现在,在我的应用程序中,我有一个极端情况,即属于一个容器对象的一个价格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
应该转换哪些对象以及何时转换。