<?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\Session; use Zend\Session\Config\ConfigInterface as Config; use Zend\Session\ManagerInterface as Manager; use Zend\Session\SaveHandler\SaveHandlerInterface as SaveHandler; use Zend\Session\Storage\StorageInterface as Storage; /** * Base ManagerInterface implementation * * Defines common constructor logic and getters for Storage and Configuration */ abstract class AbstractManager implements Manager { /** * @var Config */ protected $config; /** * Default configuration class to use when no configuration provided * @var string */ protected $defaultConfigClass = 'Zend\Session\Config\SessionConfig'; /** * @var Storage */ protected $storage; /** * Default storage class to use when no storage provided * @var string */ protected $defaultStorageClass = 'Zend\Session\Storage\SessionArrayStorage'; /** * @var SaveHandler */ protected $saveHandler; /** * Constructor * * @param Config|null $config * @param Storage|null $storage * @param SaveHandler|null $saveHandler * @throws Exception\RuntimeException */ public function __construct(Config $config = null, Storage $storage = null, SaveHandler $saveHandler = null) { // init config if ($config === null) { if (!class_exists($this->defaultConfigClass)) { throw new Exception\RuntimeException(sprintf( 'Unable to locate config class "%s"; class does not exist', $this->defaultConfigClass )); } $config = new $this->defaultConfigClass(); if (!$config instanceof Config) { throw new Exception\RuntimeException(sprintf( 'Default config class %s is invalid; must implement %s\Config\ConfigInterface', $this->defaultConfigClass, __NAMESPACE__ )); } } $this->config = $config; // init storage if ($storage === null) { if (!class_exists($this->defaultStorageClass)) { throw new Exception\RuntimeException(sprintf( 'Unable to locate storage class "%s"; class does not exist', $this->defaultStorageClass )); } $storage = new $this->defaultStorageClass(); if (!$storage instanceof Storage) { throw new Exception\RuntimeException(sprintf( 'Default storage class %s is invalid; must implement %s\Storage\StorageInterface', $this->defaultConfigClass, __NAMESPACE__ )); } } $this->storage = $storage; // save handler if ($saveHandler !== null) { $this->saveHandler = $saveHandler; } } /** * Set configuration object * * @param Config $config * @return AbstractManager */ public function setConfig(Config $config) { $this->config = $config; return $this; } /** * Retrieve configuration object * * @return Config */ public function getConfig() { return $this->config; } /** * Set session storage object * * @param Storage $storage * @return AbstractManager */ public function setStorage(Storage $storage) { $this->storage = $storage; return $this; } /** * Retrieve storage object * * @return Storage */ public function getStorage() { return $this->storage; } /** * Set session save handler object * * @param SaveHandler $saveHandler * @return AbstractManager */ public function setSaveHandler(SaveHandler $saveHandler) { $this->saveHandler = $saveHandler; return $this; } /** * Get SaveHandler Object * * @return SaveHandler */ public function getSaveHandler() { return $this->saveHandler; } }