findConnectionProvider( strtolower( $id ) )->getConnection(); } /** * @since 2.1 */ public function releaseConnections() { foreach ( self::$connectionProviders as $connectionProvider ) { $connectionProvider->releaseConnection(); } } /** * @since 2.1 * * @param string $id * @param ConnectionProvider $connectionProvider */ public function registerConnectionProvider( $id, ConnectionProvider $connectionProvider ) { self::$connectionProviders[strtolower( $id )] = $connectionProvider; } /** * @since 3.0 * * @param string $id * @param callable $callback */ public function registerCallbackConnection( $id, callable $callback ) { self::$connectionProviders[strtolower( $id )] = new CallbackConnectionProvider( $callback ); } private function findConnectionProvider( $id ) { if ( isset( self::$connectionProviders[$id] ) ) { return self::$connectionProviders[$id]; } throw new RuntimeException( "{$id} is missing a registered connection provider" ); } }