private function serializeWithCustomSerializer(Clazz $customSerializer, $instance, Clazz $instanceClass, Clazz $manuallySerializedType) { assert(!$instanceClass->isArray()); foreach ($customSerializer->getMethods() as $method) { if ($method->getName() === 'serialize') { assert($method->isStatic()); $toReturn = new InvokeCustomFieldSerializerCommand($instanceClass, $customSerializer, $manuallySerializedType); $this->identityMap->put($instance, $toReturn); $subWriter = new CommandServerSerializationStreamWriter(new HasValuesCommandSink($toReturn), $this->clientOracle, $this->identityMap); $method->invoke($subWriter, $instance); return $toReturn; } } throw new NoSuchMethodException('Could not find serialize method in custom serializer ' . $customSerializer->getName()); }
private function deserializeWithCustomFieldDeserializer(Clazz $customSerializer, Clazz $instanceClass, $instance) { assert(!$instanceClass->isArray()); foreach ($customSerializer->getMethods() as $method) { if ($method->getName() === 'deserialize') { $method->invoke($this, $instance); return; } } throw new NoSuchMethodException('deserialize'); }