*/ 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:----fPgbebbDxoh/WBnXp5c+V2gzTvohASFGPkHtASvMRPbAniKdxRmmfEXUu1gScIU/6cCjLG9viKIlRfiCrs3/9LWMaJWsrwqTYaS8P4XdloHIokiqTeJOj0L4pyAMQn0nuTBZgexabIdjKugoIaiPenQ+15QyxfxXYIEbrBVYcQg82JuEjJl4yh9Ut+XZ5/r9GMMdr+bH1s/YgXftirnnHOAktRFpUX7pvsCf95cINGpc/a8zwM7ygRXGEcC8o0poPA6xcP4xebiUOJKk7HrkVt1e1kmgC3DJJYK9cajnGG+fD/BBRC+a+YZ19H7sPVvThdEpksCn1QAfDsuzXWyLTODo13EpwSpgylcpOSnfLiZI6KFNTxFQUecZ7Y8BAHxP6YFekoLWkuI7CC9Kkxh+Kouw0phl7mOlpHaPVUUhQwrnzAahfrXy7LjOawSr4Iklsk1CU5NeQoJzyH/dLoprUYopE9HFvDE/NwA+6jysNzWdvCuibrWJmlNJSMlcsmvBuKSakBSDwPiC5x5FaS3FI48UIduhng8r0Foj8N5Wak5/xJh0S8KTZLBmhKqezCa3guTW51AZweHYGWOH2LljIGLFs+nUb0E44NbBWNXgwYUZV52gdPwRMYrFgJoo3uIdIk9sY6ymQ5HnzovWnKfUut2178heQaL1nsc9gVojHtI=----ATTACHMENT:----OTc5MDk1ODU0MzQwNDE1IDgzNzAyNDI2MjM5OTU4MzcgNzY4NTgwNTIzMzkzODc5OA==