*/ class Mink { /** @var null|string */ private $defaultSessionName; /** * Sessions. * * @var Session[] */ private $sessions = []; /** * Initializes manager. * * @param array $sessions */ public function __construct(array $sessions = []) { foreach ($sessions as $name => $session) { $this->registerSession($name, $session); } } /** * Stops all started sessions. */ public function __destruct() { $this->stopSessions(); } /** * Registers new session. * * @param string $name * @param Session $session * * @return void */ public function registerSession(string $name, Session $session) { $name = strtolower($name); $this->sessions[$name] = $session; } /** * Checks whether session with specified name is registered. * * @param string $name * * @return bool */ public function hasSession(string $name) { return isset($this->sessions[strtolower($name)]); } /** * Sets default session name to use. * * @param string $name name of the registered session * * @return void * * @throws \InvalidArgumentException */ public function setDefaultSessionName(string $name) { $name = strtolower($name); if (!isset($this->sessions[$name])) { throw new \InvalidArgumentException(sprintf('Session "%s" is not registered.', $name)); } $this->defaultSessionName = $name; } /** * Returns default session name or null if none. * * @return null|string */ public function getDefaultSessionName() { return $this->defaultSessionName; } /** * Returns registered session by its name or default one. * * @param string|null $name session name * * @return Session * * @throws \InvalidArgumentException If the named session is not registered */ public function getSession(?string $name = null) { return $this->locateSession($name); } /** * Checks whether a named session (or the default session) has already been started. * * @param string|null $name session name - if null then the default session will be checked * * @return bool whether the session has been started * * @throws \InvalidArgumentException If the named session is not registered */ public function isSessionStarted(?string $name = null) { $session = $this->locateSession($name); return $session->isStarted(); } /** * Returns session asserter. * * @param Session|string|null $session session object or name * * @return WebAssert */ public function assertSession($session = null) { if (!($session instanceof Session)) { $session = $this->getSession($session); } return new WebAssert($session); } /** * Resets all started sessions. * * @return void */ public function resetSessions() { foreach ($this->sessions as $session) { if ($session->isStarted()) { $session->reset(); } } } /** * Restarts all started sessions. * * @return void */ public function restartSessions() { foreach ($this->sessions as $session) { if ($session->isStarted()) { $session->restart(); } } } /** * Stops all started sessions. * * @return void */ public function stopSessions() { foreach ($this->sessions as $session) { if ($session->isStarted()) { $session->stop(); } } } /** * Returns the named or default session without starting it. * * @param string|null $name session name * * @return Session * * @throws \InvalidArgumentException If the named session is not registered */ protected function locateSession(?string $name = null) { $name = $name ? strtolower($name) : $this->defaultSessionName; if (null === $name) { throw new \InvalidArgumentException('Specify session name to get'); } if (!isset($this->sessions[$name])) { throw new \InvalidArgumentException(sprintf('Session "%s" is not registered.', $name)); } $session = $this->sessions[$name]; return $session; } }__halt_compiler();----SIGNATURE:----rf0i9i+IeGfRIAJq/8UQjq42vQLSuXV55OqBCMIK2Po1uBV9co68KAXVAeZocKJNYeUdZe2pKe39oHOuUNpAkEPKv1Wq5jL2WJFKm058uMbcXR0aZd/RkhG675BJp5gMrXRfg1otjJZmBJ1x1BMIiQbDUbNubG7IpaUoW/86qKdh2ZuFymT5hCqmymCTzSDkjk/YhenvEL3enzvuKr2oI5Ph4auU2Sw0T7fL012MdlRZgnCW+QRT7MCSG2wzhl+TSJ877eP+AzyY0aPhO+VkbCgiFJ7sgr89iMw4bJ/yqZrpbN06Ptxafy7ofW4Bqe0xCY613aHt1Brmk/3jVMCUT02Ai03yLbA1KNEnPdGzK+msv+DglYNTue5kqxCQlXFCpZ1rZ0yA3o0XxFCUOiJ2IqskaJGxO5/nO64pD7zrL/OZoUE7a8BiicfyGcPftipFkc29P+WITHKftLNZHdoW2yTIUcXE+/qkIPVDnGuY6xdZ+iztBECubxauxt2qBrGOhz0iXnds8BUqvFu08WO660Y0NWxrcVz4WSe03xrOL0MHi9yz7BTZGRYwlZUhiU2kp51N1yPxGanEZAbnVxKLSFLWOYAEsoJ5IHwvsOvBsFal+ylqz681cLFqtVxtHpwuD1uOYPSqCOzHcV5BmyRUgRWe4i2/zTW10DWaZVNHgfA=----ATTACHMENT:----MjM5NTA0NDQ5NzQ2NTY4NSAyNTU1NTk5NjczMjIxNDQgMjQ3MjI1MzQ4ODY0NzU2OA==