source: vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php@ e3d4e0a

Last change on this file since e3d4e0a was e3d4e0a, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago

Upload project files

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[e3d4e0a]1<?php
2
3namespace GuzzleHttp\Cookie;
4
5/**
6 * Persists cookies in the client session
7 */
8class SessionCookieJar extends CookieJar
9{
10 /**
11 * @var string session key
12 */
13 private $sessionKey;
14
15 /**
16 * @var bool Control whether to persist session cookies or not.
17 */
18 private $storeSessionCookies;
19
20 /**
21 * Create a new SessionCookieJar object
22 *
23 * @param string $sessionKey Session key name to store the cookie
24 * data in session
25 * @param bool $storeSessionCookies Set to true to store session cookies
26 * in the cookie jar.
27 */
28 public function __construct(string $sessionKey, bool $storeSessionCookies = false)
29 {
30 parent::__construct();
31 $this->sessionKey = $sessionKey;
32 $this->storeSessionCookies = $storeSessionCookies;
33 $this->load();
34 }
35
36 /**
37 * Saves cookies to session when shutting down
38 */
39 public function __destruct()
40 {
41 $this->save();
42 }
43
44 /**
45 * Save cookies to the client session
46 */
47 public function save(): void
48 {
49 $json = [];
50 /** @var SetCookie $cookie */
51 foreach ($this as $cookie) {
52 if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
53 $json[] = $cookie->toArray();
54 }
55 }
56
57 $_SESSION[$this->sessionKey] = \json_encode($json);
58 }
59
60 /**
61 * Load the contents of the client session into the data array
62 */
63 protected function load(): void
64 {
65 if (!isset($_SESSION[$this->sessionKey])) {
66 return;
67 }
68 $data = \json_decode($_SESSION[$this->sessionKey], true);
69 if (\is_array($data)) {
70 foreach ($data as $cookie) {
71 $this->setCookie(new SetCookie($cookie));
72 }
73 } elseif (\strlen($data)) {
74 throw new \RuntimeException('Invalid cookie data');
75 }
76 }
77}
Note: See TracBrowser for help on using the repository browser.