| * | Tony Bibbs | * +-----------------------------------------------------------------------+ * * PHP version 5 * * @category HTTP * @package HTTP_Session2 * @author Alexander Radivaniovich * @author Tony Bibbs * @license http://www.opensource.org/licenses/bsd-license.php The BSD License * @version CVS: $Id: Container.php 295734 2010-03-02 13:25:15Z till $ * @link http://pear.php.net/package/HTTP_Session2 */ /** * HTTP_Session2_Container_Interface */ require_once 'HTTP/Session2/Container/Interface.php'; /** * Container class for storing session data data * * @category HTTP * @package HTTP_Session2 * @author Alexander Radivaniovich * @author Tony Bibbs * @license http://www.opensource.org/licenses/bsd-license.php The BSD License * @version Release: @package_version@ * @link http://pear.php.net/package/HTTP_Session2 */ abstract class HTTP_Session2_Container implements HTTP_Session2_Container_Interface { /** * Additional options for the container object * * @var array */ protected $options = array(); /** * Constrtuctor method * * @param array $options Additional options for the container object * * @return void */ public function __construct($options = null) { $this->setDefaults(); if (is_array($options)) { $this->parseOptions($options); } } /** * Call session_write_close() in destructor for compatibility with PHP >= 5.0.5 * * @return void */ public function __destruct() { session_write_close(); } /** * Set some default options * * @return void */ protected function setDefaults() { } /** * Parse options passed to the container class * * @param array $options Options * * @return void */ protected function parseOptions($options) { foreach ($options as $option => $value) { if (in_array($option, array_keys($this->options))) { $this->options[$option] = $value; } } } /** * Set session save handler * * @return void */ public function set() { session_module_name('user'); session_set_save_handler(array($this, 'open'), array($this, 'close'), array($this, 'read'), array($this, 'write'), array($this, 'destroy'), array($this, 'gc')); } }