client = new MongoClient($uri, $uriOptions, $driverOptions); } /** * Select a database * * @param string $databaseName Database name * @param array $options Database options * @return Database */ public function selectDatabase(string $databaseName, array $options = []): Database { $mongoDatabase = $this->client->selectDatabase($databaseName, $options); return new Database($mongoDatabase); } /** * List databases */ public function listDatabases(array $options = []): array { $databases = []; foreach ($this->client->listDatabases($options) as $databaseInfo) { $databases[] = $databaseInfo; } return $databases; } /** * Drop a database */ public function dropDatabase(string $databaseName, array $options = []): array|object|null { return $this->client->dropDatabase($databaseName, $options); } /** * Get the underlying MongoDB Client * Use sparingly - prefer using wrapper methods */ public function getMongoClient(): MongoClient { return $this->client; } /** * Magic method to access database as property */ public function __get(string $databaseName): Database { return $this->selectDatabase($databaseName); } }