@@ -174,7 +174,7 @@ public function __debugInfo()
174
174
*/
175
175
public function __get (string $ databaseName )
176
176
{
177
- return $ this ->selectDatabase ($ databaseName );
177
+ return $ this ->getDatabase ($ databaseName );
178
178
}
179
179
180
180
/**
@@ -247,6 +247,43 @@ public function dropDatabase(string $databaseName, array $options = [])
247
247
return $ operation ->execute ($ server );
248
248
}
249
249
250
+ /**
251
+ * Returns a collection instance.
252
+ *
253
+ * If the collection does not exist in the database, it is not created when
254
+ * invoking this method.
255
+ *
256
+ * @see Collection::__construct() for supported options
257
+ * @param string $databaseName Name of the database containing the collection
258
+ * @param string $collectionName Name of the collection to select
259
+ * @param array $options Collection constructor options
260
+ * @throws InvalidArgumentException for parameter/option parsing errors
261
+ */
262
+ public function getCollection (string $ databaseName , string $ collectionName , array $ options = []): Collection
263
+ {
264
+ $ options += ['typeMap ' => $ this ->typeMap , 'builderEncoder ' => $ this ->builderEncoder ];
265
+
266
+ return new Collection ($ this ->manager , $ databaseName , $ collectionName , $ options );
267
+ }
268
+
269
+ /**
270
+ * Returns a database instance.
271
+ *
272
+ * If the database does not exist on the server, it is not created when
273
+ * invoking this method.
274
+ *
275
+ * @param string $databaseName Name of the database to select
276
+ * @param array $options Database constructor options
277
+ * @throws InvalidArgumentException for parameter/option parsing errors
278
+ * @see Database::__construct() for supported options
279
+ */
280
+ public function getDatabase (string $ databaseName , array $ options = []): Database
281
+ {
282
+ $ options += ['typeMap ' => $ this ->typeMap , 'builderEncoder ' => $ this ->builderEncoder ];
283
+
284
+ return new Database ($ this ->manager , $ databaseName , $ options );
285
+ }
286
+
250
287
/**
251
288
* Return the Manager.
252
289
*
@@ -354,9 +391,7 @@ final public function removeSubscriber(Subscriber $subscriber): void
354
391
*/
355
392
public function selectCollection (string $ databaseName , string $ collectionName , array $ options = [])
356
393
{
357
- $ options += ['typeMap ' => $ this ->typeMap , 'builderEncoder ' => $ this ->builderEncoder ];
358
-
359
- return new Collection ($ this ->manager , $ databaseName , $ collectionName , $ options );
394
+ return $ this ->getCollection ($ databaseName , $ collectionName , $ options );
360
395
}
361
396
362
397
/**
@@ -370,9 +405,7 @@ public function selectCollection(string $databaseName, string $collectionName, a
370
405
*/
371
406
public function selectDatabase (string $ databaseName , array $ options = [])
372
407
{
373
- $ options += ['typeMap ' => $ this ->typeMap , 'builderEncoder ' => $ this ->builderEncoder ];
374
-
375
- return new Database ($ this ->manager , $ databaseName , $ options );
408
+ return $ this ->getDatabase ($ databaseName , $ options );
376
409
}
377
410
378
411
/**
0 commit comments