You are here

class DbCommandBase in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Command/DbCommandBase.php \Drupal\Core\Command\DbCommandBase

Base command that abstracts handling of database connection arguments.

Hierarchy

Expanded class hierarchy of DbCommandBase

1 file declares its use of DbCommandBase
DbCommandBaseTest.php in core/modules/system/tests/src/Kernel/Scripts/DbCommandBaseTest.php
Contains \Drupal\Tests\system\Kernel\Scripts\DbCommandBaseTest.

File

core/lib/Drupal/Core/Command/DbCommandBase.php, line 18
Contains \Drupal\Core\Command\DbCommandBase.

Namespace

Drupal\Core\Command
View source
class DbCommandBase extends Command {

  /**
   * {@inheritdoc}
   */
  protected function configure() {
    $this
      ->addOption('database', NULL, InputOption::VALUE_OPTIONAL, 'The database connection name to use.', 'default')
      ->addOption('database-url', 'db-url', InputOption::VALUE_OPTIONAL, 'A database url to parse and use as the database connection.')
      ->addOption('prefix', NULL, InputOption::VALUE_OPTIONAL, 'Override or set the table prefix used in the database connection.');
  }

  /**
   * Parse input options decide on a database.
   *
   * @param \Symfony\Component\Console\Input\InputInterface $input
   *   Input object.
   * @return \Drupal\Core\Database\Connection
   */
  protected function getDatabaseConnection(InputInterface $input) {

    // Load connection from a url.
    if ($input
      ->getOption('database-url')) {

      // @todo this could probably be refactored to not use a global connection.
      // Ensure database connection isn't set.
      if (Database::getConnectionInfo('db-tools')) {
        throw new \RuntimeException('Database "db-tools" is already defined. Cannot define database provided.');
      }
      $info = Database::convertDbUrlToConnectionInfo($input
        ->getOption('database-url'), \Drupal::root());
      Database::addConnectionInfo('db-tools', 'default', $info);
      $key = 'db-tools';
    }
    else {
      $key = $input
        ->getOption('database');
    }

    // If they supplied a prefix, replace it in the connection information.
    $prefix = $input
      ->getOption('prefix');
    if ($prefix) {
      $info = Database::getConnectionInfo($key)['default'];
      $info['prefix']['default'] = $prefix;
      Database::removeConnection($key);
      Database::addConnectionInfo($key, 'default', $info);
    }
    return Database::getConnection('default', $key);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Command::$aliases private property
Command::$application private property
Command::$applicationDefinitionMerged private property
Command::$applicationDefinitionMergedWithArgs private property
Command::$code private property
Command::$definition private property
Command::$description private property
Command::$help private property
Command::$helperSet private property
Command::$ignoreValidationErrors private property
Command::$name private property
Command::$processTitle private property
Command::$synopsis private property
Command::$usages private property
Command::addArgument public function Adds an argument.
Command::addOption public function Adds an option.
Command::addUsage public function Add a command usage example.
Command::asText Deprecated public function Returns a text representation of the command.
Command::asXml Deprecated public function Returns an XML representation of the command.
Command::execute protected function Executes the current command. 14
Command::getAliases public function Returns the aliases for the command.
Command::getApplication public function Gets the application instance for this command.
Command::getDefinition public function Gets the InputDefinition attached to this Command.
Command::getDescription public function Returns the description for the command.
Command::getHelp public function Returns the help for the command.
Command::getHelper public function Gets a helper instance by name.
Command::getHelperSet public function Gets the helper set.
Command::getName public function Returns the command name.
Command::getNativeDefinition public function Gets the InputDefinition to be used to create XML and Text representations of this Command. 1
Command::getProcessedHelp public function Returns the processed help for the command replacing the %command.name% and %command.full_name% patterns with the real values dynamically.
Command::getSynopsis public function Returns the synopsis for the command.
Command::getUsages public function Returns alternative usages of the command.
Command::ignoreValidationErrors public function Ignores validation errors.
Command::initialize protected function Initializes the command just after the input has been validated.
Command::interact protected function Interacts with the user. 2
Command::isEnabled public function Checks whether the command is enabled or not in the current environment.
Command::mergeApplicationDefinition public function Merges the application definition with the command definition.
Command::run public function Runs the command.
Command::setAliases public function Sets the aliases for the command.
Command::setApplication public function Sets the application instance for this command.
Command::setCode public function Sets the code to execute when running this command.
Command::setDefinition public function Sets an array of argument and option instances.
Command::setDescription public function Sets the description for the command.
Command::setHelp public function Sets the help for the command.
Command::setHelperSet public function Sets the helper set.
Command::setName public function Sets the name of the command.
Command::setProcessTitle public function Sets the process title of the command.
Command::validateName private function Validates a command name.
Command::__construct public function Constructor. 3
DbCommandBase::configure protected function Configures the current command. Overrides Command::configure 3
DbCommandBase::getDatabaseConnection protected function Parse input options decide on a database. 1