예제 #1
0
파일: datum.php 프로젝트: wikimedia/avro
 /**
  * @param $writers_schema
  * @param $datum
  * @param $encoder
  * @throws AvroException
  * @throws AvroIOTypeException
  * @throws AvroSchemaParseException
  */
 private function write_union($writers_schema, $datum, $encoder)
 {
     $datum_schema_index = -1;
     $datum_schema = null;
     foreach ($writers_schema->schemas() as $index => $schema) {
         if (AvroSchema::is_valid_datum($schema, $datum)) {
             $datum_schema_index = $index;
             $datum_schema = $schema;
             break;
         }
     }
     if (is_null($datum_schema)) {
         throw new AvroIOTypeException($writers_schema, $datum);
     }
     $encoder->write_long($datum_schema_index);
     $this->write_data($datum_schema, $datum, $encoder);
 }