mirror of
https://github.com/predis/predis.git
synced 2026-08-23 15:16:06 +00:00
66 lines
1.8 KiB
PHP
66 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Predis\Commands\Preprocessors;
|
|
|
|
class PreprocessorChain implements ICommandPreprocessorChain, \ArrayAccess {
|
|
private $_preprocessors;
|
|
|
|
public function __construct($preprocessors = array()) {
|
|
foreach ($preprocessors as $preprocessor) {
|
|
$this->add($preprocessor);
|
|
}
|
|
}
|
|
|
|
public function add(ICommandPreprocessor $preprocessor) {
|
|
$this->_preprocessors[] = $preprocessor;
|
|
}
|
|
|
|
public function remove(ICommandPreprocessor $preprocessor) {
|
|
$index = array_search($preprocessor, $this->_preprocessors, true);
|
|
if ($index !== false) {
|
|
unset($this->_preprocessors);
|
|
}
|
|
}
|
|
|
|
public function process($method, &$arguments) {
|
|
$count = count($this->_preprocessors);
|
|
for ($i = 0; $i < $count; $i++) {
|
|
$this->_preprocessors[$i]->process($method, $arguments);
|
|
}
|
|
}
|
|
|
|
public function getPreprocessors() {
|
|
return $this->_preprocessors;
|
|
}
|
|
|
|
public function getIterator() {
|
|
return new \ArrayIterator($this->_preprocessors);
|
|
}
|
|
|
|
public function count() {
|
|
return count($this->_preprocessors);
|
|
}
|
|
|
|
public function offsetExists($index) {
|
|
return isset($this->_preprocessors[$index]);
|
|
}
|
|
|
|
public function offsetGet($index) {
|
|
return $this->_preprocessors[$index];
|
|
}
|
|
|
|
public function offsetSet($index, $preprocessor) {
|
|
if (!$preprocessor instanceof ICommandPreprocessor) {
|
|
throw new \InvalidArgumentException(
|
|
'A preprocessor chain can hold only instances of classes implementing '.
|
|
'the Predis\Commands\Preprocessors\ICommandPreprocessor interface'
|
|
);
|
|
}
|
|
$this->_preprocessors[$index] = $preprocessor;
|
|
}
|
|
|
|
public function offsetUnset($index) {
|
|
unset($this->_preprocessors[$index]);
|
|
}
|
|
}
|