mirror of
https://github.com/predis/predis.git
synced 2026-10-28 14:48:14 +00:00
a816adf6e7
This is mostly useful when configuring the client to use redis-cluster or redis-sentinel in order to set a common password for authentication or database. In these kind of configurations it is impossible to pass them via connection parameters as connections are created dinamically by the client depending on the server response.
61 lines
1.4 KiB
PHP
61 lines
1.4 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Predis package.
|
|
*
|
|
* (c) Daniele Alessandri <suppakilla@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Predis\Configuration;
|
|
|
|
use Predis\Connection\Factory;
|
|
use Predis\Connection\FactoryInterface;
|
|
|
|
/**
|
|
* Configures a connection factory used by the client to create new connection
|
|
* instances for single Redis nodes.
|
|
*
|
|
* @author Daniele Alessandri <suppakilla@gmail.com>
|
|
*/
|
|
class ConnectionFactoryOption implements OptionInterface
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function filter(OptionsInterface $options, $value)
|
|
{
|
|
if ($value instanceof FactoryInterface) {
|
|
return $value;
|
|
} elseif (is_array($value)) {
|
|
$factory = $this->getDefault($options);
|
|
|
|
foreach ($value as $scheme => $initializer) {
|
|
$factory->define($scheme, $initializer);
|
|
}
|
|
|
|
return $factory;
|
|
} else {
|
|
throw new \InvalidArgumentException(
|
|
'Invalid value provided for the connections option.'
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getDefault(OptionsInterface $options)
|
|
{
|
|
$factory = new Factory();
|
|
|
|
if ($options->defined('parameters')) {
|
|
$factory->setDefaultParameters($options->parameters);
|
|
}
|
|
|
|
return $factory;
|
|
}
|
|
}
|