You are here

public static function Connection::createUrlFromConnectionOptions in Drupal 8

Same name in this branch
  1. 8 core/lib/Drupal/Core/Database/Connection.php \Drupal\Core\Database\Connection::createUrlFromConnectionOptions()
  2. 8 core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php \Drupal\Core\Database\Driver\sqlite\Connection::createUrlFromConnectionOptions()
Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Database/Connection.php \Drupal\Core\Database\Connection::createUrlFromConnectionOptions()

Creates a URL from an array of database connection options.

@internal This method should only be called from \Drupal\Core\Database\Database::getConnectionInfoAsUrl().

Parameters

array $connection_options: The array of connection options for a database connection. An additional key of 'module' is added by Database::getConnectionInfoAsUrl() for drivers provided my contributed or custom modules for convenience.

Return value

string The connection info as a URL.

Throws

\InvalidArgumentException Exception thrown when the provided array of connection options does not meet the minimum requirements.

See also

\Drupal\Core\Database\Database::getConnectionInfoAsUrl()

1 method overrides Connection::createUrlFromConnectionOptions()
Connection::createUrlFromConnectionOptions in core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php
Creates a URL from an array of database connection options.

File

core/lib/Drupal/Core/Database/Connection.php, line 1660

Class

Connection
Base Database API class.

Namespace

Drupal\Core\Database

Code

public static function createUrlFromConnectionOptions(array $connection_options) {
  if (!isset($connection_options['driver'], $connection_options['database'])) {
    throw new \InvalidArgumentException("As a minimum, the connection options array must contain at least the 'driver' and 'database' keys");
  }
  $user = '';
  if (isset($connection_options['username'])) {
    $user = $connection_options['username'];
    if (isset($connection_options['password'])) {
      $user .= ':' . $connection_options['password'];
    }
    $user .= '@';
  }
  $host = empty($connection_options['host']) ? 'localhost' : $connection_options['host'];
  $db_url = $connection_options['driver'] . '://' . $user . $host;
  if (isset($connection_options['port'])) {
    $db_url .= ':' . $connection_options['port'];
  }
  $db_url .= '/' . $connection_options['database'];

  // Add the module when the driver is provided by a module.
  if (isset($connection_options['module'])) {
    $db_url .= '?module=' . $connection_options['module'];
  }
  if (isset($connection_options['prefix']['default']) && $connection_options['prefix']['default'] !== '') {
    $db_url .= '#' . $connection_options['prefix']['default'];
  }
  return $db_url;
}