Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpnamespace 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");}}}