Returns configured driver instance
This method in fact 'installs' driver in application

@param string $key Name of driver
@return DriverInterface
@throws DriverNotFoundException if requested driver doesn't exist
163864
public function get(string $key): DriverInterface
    {
        if (!$this->has($key)) {
            throw new DriverNotFoundException('Driver you are looking for doesn\'t exist. Make sure that ' . $key . ' driver is properly configured.');
        }

        return $this->drivers[$key]::install($this->appConfiguration);
    }
208030
public function getDriverConfig(?string $key = null, $default = null)
    {
        return Arr::get($this->config, $key, $default);
    }
824785
public function getProvider($key) {
        if (!isset($this->providers[$key])) {
            return null;
        }
        
        return $this->providers[$key];
    }
679446
public function exists($key)
    {
        $this->init();
        $result = $this->driver->exists($key);
        return (bool)$result;
    }
641130
public static function resolve($name)
    {
        // Only resolve once
        if (isset(static::$resolved[$name])) {
            return static::$resolved[$name];
        }

        if ($driver = self::getInstance()->get($name)) {
            event(get_class(self::getInstance()) . ':resolved', $driver);

            return $driver;
        }

        throw new DriverNotRegistered("Driver {$name} not registered");
    }
357167
public function find($key = null)
    {
        if (is_null($key)) {
            $key = $this->defaultKey;
        }

        return $this->driver->get($this->getKey($key));
    }
511476
protected function getFinder($key)
    {
        $finderClass = $this->config->getKey($key, 'ClassName');
        return new $finderClass($this->config->getSubConfig($key));
    }
531759
protected function getContext($key)
    {
        if (GC_CLI) {
            return gplcart_array_get($this->context, $key);
        }

        return $this->session->get("install.context.$key");
    }
1026644
public function getDriver($key) {
        if (isset($this->_drivers[$key])) {
            return $this->_drivers[$key];
        }

        throw new MissingDriverException(sprintf('Driver %s does not exist', $key));
    }
391221
private function getDriver(): \BearFramework\App\ICacheDriver
    {
        if ($this->driver !== null) {
            return $this->driver;
        }
        throw new \Exception('No cache driver specified! Use useAppDataDriver() or setDriver() to specify one.');
    }
1306770
public function dump($key)
    {
        $this->init();
        $result = $this->driver->dump($key);
        return $this->convertFalseToNull($result);
    }
390504
protected function getBindingKeyForDriver($driver)
    {
        if (class_exists($driver)) {
            return $driver;
        }

        if ($this->app->bound($key = "hashid.driver.$driver")) {
            return $key;
        }
    }
1116450
public function getSection(string $key) : ConfigurationBagInterface
    {
        return new ConfigurationBag(isset($this->parameters[$key]) ? $this->parameters[$key] : []);
    }
147393
protected static function callDatabase($key)
    {
        $params = ['migration', 'prefixing', 'prefixe', 'default'];
        $data = self::$params['database'];
        $driver = $data['default'];
        //
        exception_if(!array_has($data['connections'], $driver), DatabaseDriverNotFoundException::class, $driver);
        //
        return (!in_array($key, $params)) ? $data['connections'][$driver][$key] : $data[$key];
    }
1303133
public function getDriver(/*# string */ $tag = '')/*# : DriverInterface */
    {
        // match drivers
        $matched = $this->driverMatcher($tag);

        if (count($matched) > 0) {
            return $this->drivers[$matched[rand(1, count($matched)) - 1]];
        } else {
            throw new NotFoundException(
                Message::get(Message::DB_DRIVER_NOTFOUND),
                Message::DB_DRIVER_NOTFOUND
            );
        }
    }
1343584
public function createEmbedFor($key)
    {
        if (false === $this->isEmbed($key)) {
            throw new \RuntimeException(sprintf('Unable to create an Embed instance for property key "%s" - the property is not an embed.', $key));
        }

        $embedMeta = $this->getMetadata()->getEmbed($key)->embedMeta;
        $embed = $this->getStore()->loadEmbed($embedMeta, []);
        $embed->getState()->setNew();
        return $embed;
    }
558745
private function findDriver($driver = '')
    {
        if (isset($this->driverList[$driver])) {
            $driver = $this->driverList[$driver];
        } else {
            throw new DriverNotFoundException(sprintf('%s adında bir sürücü bulunamadı', $driver));
        }

        if (is_string($driver)) {
            $callableName = "create" . ucfirst($driver) . "Driver";
            $response = call_user_func([$this, $callableName]);
        } elseif (is_callable($driver)) {
            $response = $driver();
        }

        return $response;
    }