diff --git a/library/Rediska.php b/library/Rediska.php index 46f6c4e..01b67cf 100644 --- a/library/Rediska.php +++ b/library/Rediska.php @@ -49,6 +49,11 @@ class Rediska extends Rediska_Options */ const CONNECTION_SOCKET_CLASS = 'Rediska_Connection_Socket'; + /** + * Default serializer class + */ + const SERIALIZER_CLASS = 'Rediska_Serializer'; + /** * Connections * @@ -518,7 +523,8 @@ public function setSerializerAdapter($adapter) public function getSerializer() { if ($this->_serializer === null) { - $this->_serializer = new Rediska_Serializer($this->_options['serializerAdapter']); + $className = static::SERIALIZER_CLASS; + $this->_serializer = new $className($this->_options['serializerAdapter']); } return $this->_serializer; diff --git a/library/Rediska/Serializer.php b/library/Rediska/Serializer.php index 34d9682..7c005b9 100644 --- a/library/Rediska/Serializer.php +++ b/library/Rediska/Serializer.php @@ -19,6 +19,17 @@ class Rediska_Serializer */ protected $_adapter; + /** + * Available adapters with their classes + * + * @var array + */ + protected $available_adapters = array( + 'phpSerialize' => 'Rediska_Serializer_Adapter_PhpSerialize', + 'json' => 'Rediska_Serializer_Adapter_Json', + 'toString' => 'Rediska_Serializer_Adapter_ToString', + ); + /** * Constuctor * @@ -34,14 +45,14 @@ public function __construct($adapter) * * @param $adapter * @return Rediska_Serializer + * @throws Rediska_Serializer_Exception */ public function setAdapter($adapter) { if (is_object($adapter)) { $this->_adapter = $adapter; - } else if (in_array($adapter, array('phpSerialize', 'json', 'toString'))) { - $adapter = ucfirst($adapter); - $className = "Rediska_Serializer_Adapter_$adapter"; + } elseif (isset($this->available_adapters[$adapter])) { + $className = $this->available_adapters[$adapter]; $this->_adapter = new $className; } else { if (!@class_exists($adapter)) {