* @copyright 2016 - 2021 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @version 3.2.0 * @link https://git.timshomepage.net/timw4mail/banker */ namespace Aviat\Banker; use Aviat\Banker\Driver\DriverInterface; use Aviat\Banker\Exception\InvalidArgumentException; /** * Private trait for shared driver-related functionality */ trait _Driver { use KeyValidateTrait; /** * Driver class for handling the chosen caching backend * * @var DriverInterface */ private DriverInterface $driver; /** * Instantiate the appropriate cache backend based on the config * * @param array $driverConfig * @return DriverInterface */ protected function loadDriver(array $driverConfig = []): DriverInterface { $driver = ucfirst(strtolower($driverConfig['driver'] ?? 'null')); $class = __NAMESPACE__ . "\\Driver\\${driver}Driver"; $driverConfig['connection'] = $driverConfig['connection'] ?? []; $driverConfig['options'] = $driverConfig['options'] ?? []; return new $class($driverConfig['connection'], $driverConfig['options']); } }