--TEST-- PHPC-924: Cursor::setTypeMap() may unnecessarily convert first BSON document (type map) --SKIPIF-- --FILE-- data['_id'] = $id; } #[\ReturnTypeWillChange] public function bsonSerialize() { return (object) $this->data; } public function bsonUnserialize(array $data): void { printf("%s called for ID: %s\n", __METHOD__, $data['_id']); $this->data = $data; } } $manager = create_test_manager(); $bulk = new MongoDB\Driver\BulkWrite(); $bulk->insert(new MyDocument('a')); $bulk->insert(new MyDocument('b')); $manager->executeBulkWrite(NS, $bulk); $cursor = $manager->executeQuery(NS, new MongoDB\Driver\Query([])); $cursor->setTypeMap(['root' => 'MyDocument']); foreach ($cursor as $i => $document) { var_dump($document); } ?> ===DONE=== --EXPECTF-- MyDocument::bsonUnserialize called for ID: a object(MyDocument)#%d (%d) { ["data":"MyDocument":private]=> array(1) { ["_id"]=> string(1) "a" } } MyDocument::bsonUnserialize called for ID: b object(MyDocument)#%d (%d) { ["data":"MyDocument":private]=> array(1) { ["_id"]=> string(1) "b" } } ===DONE===