initializeFromCallable($value); } $initializer = $this->getInitializer($value); return $this->checkInstance($initializer()); } protected function initializeFromCallable($callable) { return $this->checkInstance(call_user_func($callable)); } protected function getInitializer($fqnOrType) { switch ($fqnOrType) { case 'predis': return function() { return new PredisCluster(); }; default: return function() use($fqnOrType) { return new $fqnOrType(); }; } } public function getDefault() { return new PredisCluster(); } }