public static function readData(FlashorbBinaryReader $reader, $context, $dataType) { $ctx = $context; $contextPassedAsNull = is_null($ctx); $dataTypePassedAsNull = is_null($dataType); if ($contextPassedAsNull) { $ctx = new ParseContext(0); } if ($dataTypePassedAsNull) { $type = $reader->readByte(); } else { $type = $dataType; } if ($contextPassedAsNull && $dataTypePassedAsNull || $ctx->getVersion() != 3) { $version = 1; } else { $version = 3; } if (LOGGING) { Log::log(LoggingConstants::SERIALIZATION, "Reading data type: {$type}, version: {$version}"); } $readers = null; //echo $ctx->getVersion(); exit; if ($version == 1) { $readers = self::getReadersV1(); } else { $readers = self::getReadersV3(); } return $readers[$type]->read($reader, $ctx); }
public function read(FlashorbBinaryReader $reader, ParseContext $parseContext) { $properties = array(); $anonymousObject = new AnonymousObject($properties); $parseContext->addReference($anonymousObject); while (true) { $propName = $reader->readUTF(); $obj = null; $dataType = $reader->readByte(); if ($dataType == Datatypes::REMOTEREFERENCE_DATATYPE_V1 && $propName != "nc") { $obj = 0; // must be an instance of Flash's Number } else { $obj = AmfMessageFactory::readData($reader, $parseContext, $dataType); } if (is_null($obj)) { break; } $properties[$propName] = $obj; } return $anonymousObject; }
public static function readData2(FlashorbBinaryReader $reader, ParseContext $parseContext, $readers) { if (LOGGING) { Log::log(LoggingConstants::DEBUG, "3: The version is " . $parseContext->getVersion()); } /*int*/ $type = $reader->readByte(); if (LOGGING) { Log::log(LoggingConstants::DEBUG, "The type is " . $type); } if ($type == 17) { return self::$V1READERS[$type]->read($reader, $parseContext); } else { return $readers[$type]->read($reader, $parseContext); } }