public function write(&$object, IProtocolFormatter $writer) { $referenceCache = $writer->getReferenceCache(); $refId = $referenceCache->getId($object); if (is_string($object)) { $writer->writeStringReference($refId); } else { if (is_array($object)) { $writer->writeArrayReference($refId); } else { $writer->writeObjectReference($refId); } } }
public static function writeObject(&$obj, IProtocolFormatter $formatter) { if (!self::$initialized) { self::init(); } $writer = self::getWriter($obj); if (is_null($writer)) { throw new Exception("Writer is not found."); } try { if ($writer->isReferenceableType()) { $referenceCache = $formatter->getReferenceCache(); if ($referenceCache == null) { $formatter->resetReferenceCache(); $referenceCache = $formatter->getReferenceCache(); } if ($referenceCache->hasObject($obj)) { self::$s_referenceWriter->write($obj, $formatter); return; } else { $referenceCache->addObject($obj); } } $writer->write($obj, $formatter); } catch (Exception $ex) { if (LOGGING) { Log::logException(LoggingConstants::EXCEPTION, "Unable to write object", $ex); } } }