/** * Constructor * * Sets the $_SESSION superglobal to an ArrayObject, maintaining previous * values if any discovered. * * @param array|null $input * @param int $flags * @param string $iteratorClass */ public function __construct($input = null, $flags = ArrayObject::ARRAY_AS_PROPS, $iteratorClass = '\\ArrayIterator') { $resetSession = true; if (null === $input && isset($_SESSION)) { $input = $_SESSION; if (is_object($input) && $_SESSION instanceof ArrayObject) { $resetSession = false; } elseif (is_object($input) && !$_SESSION instanceof ArrayObject) { $input = (array) $input; } } elseif (null === $input) { $input = array(); } parent::__construct($input, $flags, $iteratorClass); if ($resetSession) { $_SESSION = $this; } }