mirror of
https://github.com/predis/predis.git
synced 2026-08-25 18:49:44 +00:00
41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Predis\Options;
|
|
|
|
use Predis\Network\IConnectionCluster;
|
|
use Predis\Network\PredisCluster;
|
|
|
|
class ClientCluster extends Option {
|
|
protected function checkInstance($cluster) {
|
|
if (!$cluster instanceof IConnectionCluster) {
|
|
throw new \InvalidArgumentException(
|
|
'Instance of Predis\Network\IConnectionCluster expected'
|
|
);
|
|
}
|
|
return $cluster;
|
|
}
|
|
|
|
public function validate($value) {
|
|
if (is_callable($value)) {
|
|
return $this->checkInstance(call_user_func($value));
|
|
}
|
|
$initializer = $this->getInitializer($value);
|
|
return $this->checkInstance($initializer());
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|