diff options
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php')
-rw-r--r-- | vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php b/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php new file mode 100644 index 0000000..e0a2d95 --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php @@ -0,0 +1,39 @@ +<?php + +namespace Guzzle\Batch; + +use Guzzle\Common\Exception\InvalidArgumentException; + +/** + * Divides batches using a callable + */ +class BatchClosureDivisor implements BatchDivisorInterface +{ + /** @var callable Method used to divide the batches */ + protected $callable; + + /** @var mixed $context Context passed to the callable */ + protected $context; + + /** + * @param callable $callable Method used to divide the batches. The method must accept an \SplQueue and return an + * array of arrays containing the divided items. + * @param mixed $context Optional context to pass to the batch divisor + * + * @throws InvalidArgumentException if the callable is not callable + */ + public function __construct($callable, $context = null) + { + if (!is_callable($callable)) { + throw new InvalidArgumentException('Must pass a callable'); + } + + $this->callable = $callable; + $this->context = $context; + } + + public function createBatches(\SplQueue $queue) + { + return call_user_func($this->callable, $queue, $this->context); + } +} |