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);
     }
 }