- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\Cache\Storage\Plugin;
- use Zend\Cache\Exception;
- use Zend\Serializer\Adapter\AdapterInterface as SerializerAdapter;
- use Zend\Serializer\Serializer as SerializerFactory;
- use Zend\Stdlib\AbstractOptions;
- class PluginOptions extends AbstractOptions
- {
- /**
- * Used by:
- * - ClearByFactor
- * @var int
- */
- protected $clearingFactor = 0;
- /**
- * Used by:
- * - ExceptionHandler
- * @var callable
- */
- protected $exceptionCallback;
- /**
- * Used by:
- * - IgnoreUserAbort
- * @var bool
- */
- protected $exitOnAbort = true;
- /**
- * Used by:
- * - OptimizeByFactor
- * @var int
- */
- protected $optimizingFactor = 0;
- /**
- * Used by:
- * - Serializer
- * @var string|SerializerAdapter
- */
- protected $serializer;
- /**
- * Used by:
- * - Serializer
- * @var array
- */
- protected $serializerOptions = array();
- /**
- * Used by:
- * - ExceptionHandler
- * @var bool
- */
- protected $throwExceptions = true;
- /**
- * Set automatic clearing factor
- *
- * Used by:
- * - ClearExpiredByFactor
- *
- * @param int $clearingFactor
- * @return PluginOptions
- */
- public function setClearingFactor($clearingFactor)
- {
- $this->clearingFactor = $this->normalizeFactor($clearingFactor);
- return $this;
- }
- /**
- * Get automatic clearing factor
- *
- * Used by:
- * - ClearExpiredByFactor
- *
- * @return int
- */
- public function getClearingFactor()
- {
- return $this->clearingFactor;
- }
- /**
- * Set callback to call on intercepted exception
- *
- * Used by:
- * - ExceptionHandler
- *
- * @param callable $exceptionCallback
- * @throws Exception\InvalidArgumentException
- * @return PluginOptions
- */
- public function setExceptionCallback($exceptionCallback)
- {
- if ($exceptionCallback !== null && !is_callable($exceptionCallback, true)) {
- throw new Exception\InvalidArgumentException('Not a valid callback');
- }
- $this->exceptionCallback = $exceptionCallback;
- return $this;
- }
- /**
- * Get callback to call on intercepted exception
- *
- * Used by:
- * - ExceptionHandler
- *
- * @return null|callable
- */
- public function getExceptionCallback()
- {
- return $this->exceptionCallback;
- }
- /**
- * Exit if connection aborted and ignore_user_abort is disabled.
- *
- * @param bool $exitOnAbort
- * @return PluginOptions
- */
- public function setExitOnAbort($exitOnAbort)
- {
- $this->exitOnAbort = (bool) $exitOnAbort;
- return $this;
- }
- /**
- * Exit if connection aborted and ignore_user_abort is disabled.
- *
- * @return bool
- */
- public function getExitOnAbort()
- {
- return $this->exitOnAbort;
- }
- /**
- * Set automatic optimizing factor
- *
- * Used by:
- * - OptimizeByFactor
- *
- * @param int $optimizingFactor
- * @return PluginOptions
- */
- public function setOptimizingFactor($optimizingFactor)
- {
- $this->optimizingFactor = $this->normalizeFactor($optimizingFactor);
- return $this;
- }
- /**
- * Set automatic optimizing factor
- *
- * Used by:
- * - OptimizeByFactor
- *
- * @return int
- */
- public function getOptimizingFactor()
- {
- return $this->optimizingFactor;
- }
- /**
- * Set serializer
- *
- * Used by:
- * - Serializer
- *
- * @param string|SerializerAdapter $serializer
- * @throws Exception\InvalidArgumentException
- * @return Serializer
- */
- public function setSerializer($serializer)
- {
- if (!is_string($serializer) && !$serializer instanceof SerializerAdapter) {
- throw new Exception\InvalidArgumentException(sprintf(
- '%s expects either a string serializer name or Zend\Serializer\Adapter\AdapterInterface instance; '
- . 'received "%s"',
- __METHOD__,
- (is_object($serializer) ? get_class($serializer) : gettype($serializer))
- ));
- }
- $this->serializer = $serializer;
- return $this;
- }
- /**
- * Get serializer
- *
- * Used by:
- * - Serializer
- *
- * @return SerializerAdapter
- */
- public function getSerializer()
- {
- if (!$this->serializer instanceof SerializerAdapter) {
- // use default serializer
- if (!$this->serializer) {
- $this->setSerializer(SerializerFactory::getDefaultAdapter());
- // instantiate by class name + serializer_options
- } else {
- $options = $this->getSerializerOptions();
- $this->setSerializer(SerializerFactory::factory($this->serializer, $options));
- }
- }
- return $this->serializer;
- }
- /**
- * Set configuration options for instantiating a serializer adapter
- *
- * Used by:
- * - Serializer
- *
- * @param mixed $serializerOptions
- * @return PluginOptions
- */
- public function setSerializerOptions($serializerOptions)
- {
- $this->serializerOptions = $serializerOptions;
- return $this;
- }
- /**
- * Get configuration options for instantiating a serializer adapter
- *
- * Used by:
- * - Serializer
- *
- * @return array
- */
- public function getSerializerOptions()
- {
- return $this->serializerOptions;
- }
- /**
- * Set flag indicating we should re-throw exceptions
- *
- * Used by:
- * - ExceptionHandler
- *
- * @param bool $throwExceptions
- * @return PluginOptions
- */
- public function setThrowExceptions($throwExceptions)
- {
- $this->throwExceptions = (bool) $throwExceptions;
- return $this;
- }
- /**
- * Should we re-throw exceptions?
- *
- * Used by:
- * - ExceptionHandler
- *
- * @return bool
- */
- public function getThrowExceptions()
- {
- return $this->throwExceptions;
- }
- /**
- * Normalize a factor
- *
- * Cast to int and ensure we have a value greater than zero.
- *
- * @param int $factor
- * @return int
- * @throws Exception\InvalidArgumentException
- */
- protected function normalizeFactor($factor)
- {
- $factor = (int) $factor;
- if ($factor < 0) {
- throw new Exception\InvalidArgumentException(
- "Invalid factor '{$factor}': must be greater or equal 0"
- );
- }
- return $factor;
- }
- }