Exemplo n.º 1
0
 private function serializeArray($data)
 {
     $ref = $this->referenceStore->getReference($data, ReferenceStore::TYPE_OBJECT);
     if ($ref !== false) {
         //use reference
         $this->serializeInt($ref << 1);
         return;
     }
     $isDense = Spec::isDenseArray($data);
     if ($isDense) {
         $this->serializeInt(count($data) << 1 | Spec::REFERENCE_BIT);
         $this->serializeString('');
         foreach ($data as $element) {
             $this->serialize($element);
         }
     } else {
         $this->serializeInt(1);
         foreach ($data as $key => $value) {
             $this->serializeString((string) $key, false);
             $this->serialize($value);
         }
         $this->serializeString('');
     }
 }