configuration[$configKey])) throw new MissingRequiredConfigurationValueException($this->databaseIdentifier, static::class, $configKey); return $this->configuration[$configKey]; } /** * Get an optional configuration value. * @param string $configKey Configuration key. * @param mixed|null $default Default configuration value. * @return mixed Configuration value. */ public function getOptionalConfig(string $configKey, mixed $default = null): mixed { return $this->configuration[$configKey] ?? $default; } /** * Make the database object from its configuration array. * @return Database The created database. * @throws MissingRequiredConfigurationValueException */ public abstract function make(): Database; }