mirror of
https://github.com/predis/predis.git
synced 2026-08-25 17:59:41 +00:00
c8e20e428a
It was too broad in concept and not really that useful, so for now we assume that only our base Predis\Profile\RedisProfile class can handle command processing and we will decide later if we want to add a couple of more methods to Predis\Profile\ProfileInterface.
65 lines
1.7 KiB
PHP
65 lines
1.7 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 InvalidArgumentException;
|
|
use Predis\Profile;
|
|
|
|
/**
|
|
* Configures the server profile to be used by the client
|
|
* to create command instances depending on the specified
|
|
* version of the Redis server.
|
|
*
|
|
* @author Daniele Alessandri <suppakilla@gmail.com>
|
|
*/
|
|
class ProfileOption implements OptionInterface
|
|
{
|
|
/**
|
|
* Sets the needed commands processors that should be applied to the profile.
|
|
*
|
|
* @param OptionsInterface $options Client options.
|
|
* @param Profile\ProfileInterface $profile Server profile.
|
|
*/
|
|
protected function setProcessors(OptionsInterface $options, Profile\ProfileInterface $profile)
|
|
{
|
|
if (isset($options->prefix) && $profile instanceof Profile\RedisProfile) {
|
|
$profile->setProcessor($options->prefix);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function filter(OptionsInterface $options, $value)
|
|
{
|
|
if (is_string($value)) {
|
|
$value = Profile\Factory::get($value);
|
|
$this->setProcessors($options, $value);
|
|
} else if (!$value instanceof Profile\ProfileInterface) {
|
|
throw new InvalidArgumentException('Invalid value for the profile option');
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getDefault(OptionsInterface $options)
|
|
{
|
|
$profile = Profile\Factory::getDefault();
|
|
$this->setProcessors($options, $profile);
|
|
|
|
return $profile;
|
|
}
|
|
}
|