Chris@0: sessionKey = $sessionKey; Chris@0: $this->storeSessionCookies = $storeSessionCookies; Chris@0: $this->load(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Saves cookies to session when shutting down Chris@0: */ Chris@0: public function __destruct() Chris@0: { Chris@0: $this->save(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Save cookies to the client session Chris@0: */ Chris@0: public function save() Chris@0: { Chris@0: $json = []; Chris@0: foreach ($this as $cookie) { Chris@0: /** @var SetCookie $cookie */ Chris@0: if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { Chris@0: $json[] = $cookie->toArray(); Chris@0: } Chris@0: } Chris@0: Chris@0: $_SESSION[$this->sessionKey] = json_encode($json); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Load the contents of the client session into the data array Chris@0: */ Chris@0: protected function load() Chris@0: { Chris@0: if (!isset($_SESSION[$this->sessionKey])) { Chris@0: return; Chris@0: } Chris@0: $data = json_decode($_SESSION[$this->sessionKey], true); Chris@0: if (is_array($data)) { Chris@0: foreach ($data as $cookie) { Chris@0: $this->setCookie(new SetCookie($cookie)); Chris@0: } Chris@0: } elseif (strlen($data)) { Chris@0: throw new \RuntimeException("Invalid cookie data"); Chris@0: } Chris@0: } Chris@0: }