1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\Cache;
- use Traversable;
- use Zend\Stdlib\ArrayUtils;
- use Zend\ServiceManager\ServiceManager;
- abstract class PatternFactory
- {
- /**
- * The pattern manager
- *
- * @var null|PatternPluginManager
- */
- protected static $plugins = null;
- /**
- * Instantiate a cache pattern
- *
- * @param string|Pattern\PatternInterface $patternName
- * @param array|Traversable|Pattern\PatternOptions $options
- * @return Pattern\PatternInterface
- * @throws Exception\InvalidArgumentException
- */
- public static function factory($patternName, $options = [])
- {
- if ($options instanceof Pattern\PatternOptions) {
- $options = $options->toArray();
- }
- if ($options instanceof Traversable) {
- $options = ArrayUtils::iteratorToArray($options);
- }
- if (! is_array($options)) {
- throw new Exception\InvalidArgumentException(sprintf(
- '%s expects an array, Traversable object, or %s\Pattern\PatternOptions object; received "%s"',
- __METHOD__,
- __NAMESPACE__,
- (is_object($options) ? get_class($options) : gettype($options))
- ));
- }
- if ($patternName instanceof Pattern\PatternInterface) {
- $patternName->setOptions(new Pattern\PatternOptions($options));
- return $patternName;
- }
- return static::getPluginManager()->get($patternName, $options);
- }
- /**
- * Get the pattern plugin manager
- *
- * @return PatternPluginManager
- */
- public static function getPluginManager()
- {
- if (static::$plugins === null) {
- static::$plugins = new PatternPluginManager(new ServiceManager);
- }
- return static::$plugins;
- }
- /**
- * Set the pattern plugin manager
- *
- * @param PatternPluginManager $plugins
- * @return void
- */
- public static function setPluginManager(PatternPluginManager $plugins)
- {
- static::$plugins = $plugins;
- }
- /**
- * Reset pattern plugin manager to default
- *
- * @return void
- */
- public static function resetPluginManager()
- {
- static::$plugins = null;
- }
- }
|