php - How to handle edge case for a subscriber to not act on a specific object using the JMS/Serializer library? -
i using jms/serialzier library.
i have setup event-subscriber, listens events::pre_serialize , convert object instances of class price having property currency , amount different currencies.
public function onpreserialize(preserializeevent $event) { $object = $event->getobject(); $class = get_class($object); switch ($class) { case price::class: return $this->currencyservice->convertprice($object); } } yet now, in application have edge case 1 price belonging 1 container object edgecase not need converted @ all:
use jms\serializer\annotation\type; class edgecase { /** * @type("kopernikus\price") * @var price */ private $price; // 1 instance should not handled event subscriber } but has retain original state. yet don't seem able differentiate origin of object comming from.
i want able configure price objects should converted , when.
as quick , dirty solution have created staticprice class extending price , changed instantiaton of price object edge case.
i have added further check in subscriber, relevant subscriber looks like:
switch ($class) { case price::class: if ($object instanceof staticprice) { break; } return $this->currencyservice->convertprice($object); } yet feels wrong solve in such hard-coded way on object level; , have change logic creating price objects. works now.
Comments
Post a Comment