Exemplo n.º 1
0
 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);
         }
     }
 }
Exemplo n.º 2
0
 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);
         }
     }
 }