/** * Converter method to convert a BSON object to its legacy type * * @param BSON\Type $value * @return mixed */ private static function convertBSONObjectToLegacy(BSON\Type $value) { switch (true) { case $value instanceof BSON\ObjectID: return new \MongoId($value); case $value instanceof BSON\Binary: return new \MongoBinData($value); case $value instanceof BSON\Javascript: return new \MongoCode($value); case $value instanceof BSON\MaxKey: return new \MongoMaxKey(); case $value instanceof BSON\MinKey: return new \MongoMinKey(); case $value instanceof BSON\Regex: return new \MongoRegex($value); case $value instanceof BSON\Timestamp: return new \MongoTimestamp($value); case $value instanceof BSON\UTCDatetime: return new \MongoDate($value); case $value instanceof Model\BSONDocument: case $value instanceof Model\BSONArray: return array_map(['self', 'toLegacy'], $value->getArrayCopy()); default: return $value; } }