| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- <?php
 
- namespace GuzzleHttp\Cookie;
 
- /**
 
-  * Persists cookies in the client session
 
-  */
 
- class SessionCookieJar extends CookieJar
 
- {
 
-     /**
 
-      * @var string session key
 
-      */
 
-     private $sessionKey;
 
-     /**
 
-      * @var bool Control whether to persist session cookies or not.
 
-      */
 
-     private $storeSessionCookies;
 
-     /**
 
-      * Create a new SessionCookieJar object
 
-      *
 
-      * @param string $sessionKey          Session key name to store the cookie
 
-      *                                    data in session
 
-      * @param bool   $storeSessionCookies Set to true to store session cookies
 
-      *                                    in the cookie jar.
 
-      */
 
-     public function __construct(string $sessionKey, bool $storeSessionCookies = false)
 
-     {
 
-         parent::__construct();
 
-         $this->sessionKey = $sessionKey;
 
-         $this->storeSessionCookies = $storeSessionCookies;
 
-         $this->load();
 
-     }
 
-     /**
 
-      * Saves cookies to session when shutting down
 
-      */
 
-     public function __destruct()
 
-     {
 
-         $this->save();
 
-     }
 
-     /**
 
-      * Save cookies to the client session
 
-      */
 
-     public function save(): void
 
-     {
 
-         $json = [];
 
-         /** @var SetCookie $cookie */
 
-         foreach ($this as $cookie) {
 
-             if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
 
-                 $json[] = $cookie->toArray();
 
-             }
 
-         }
 
-         $_SESSION[$this->sessionKey] = \json_encode($json);
 
-     }
 
-     /**
 
-      * Load the contents of the client session into the data array
 
-      */
 
-     protected function load(): void
 
-     {
 
-         if (!isset($_SESSION[$this->sessionKey])) {
 
-             return;
 
-         }
 
-         $data = \json_decode($_SESSION[$this->sessionKey], true);
 
-         if (\is_array($data)) {
 
-             foreach ($data as $cookie) {
 
-                 $this->setCookie(new SetCookie($cookie));
 
-             }
 
-         } elseif (\strlen($data)) {
 
-             throw new \RuntimeException('Invalid cookie data');
 
-         }
 
-     }
 
- }
 
 
  |