![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-session/src/ |
<?php namespace Laminas\Session; use Laminas\EventManager\EventManager; use Laminas\Session\Storage\StorageInterface; use Laminas\Session\Validator\ValidatorInterface; use function array_shift; use function array_unshift; use function is_array; class ValidatorChain extends EventManager { public function __construct(protected StorageInterface $storage) { parent::__construct(); $validators = $storage->getMetadata('_VALID'); if ($validators) { foreach ($validators as $validator => $data) { $this->attachValidator('session.validate', [new $validator($data), 'isValid'], 1); } } } /** * Attach a listener to the session validator chain. * * @param string $eventName * @param int $priority * @return callable */ public function attach($eventName, callable $listener, $priority = 1) { return $this->attachValidator($eventName, $listener, $priority); } /** * Retrieve session storage object * * @return StorageInterface */ public function getStorage() { return $this->storage; } /** * Internal implementation for attaching a listener to the * session validator chain. * * @param string $event * @param callable $callback * @param int $priority * @return callable */ private function attachValidator($event, $callback, $priority) { $context = null; if ($callback instanceof ValidatorInterface) { $context = $callback; } elseif (is_array($callback)) { $test = array_shift($callback); if ($test instanceof ValidatorInterface) { $context = $test; } array_unshift($callback, $test); } if ($context instanceof ValidatorInterface) { $data = $context->getData(); $name = $context->getName(); $this->getStorage()->setMetadata('_VALID', [$name => $data]); } return parent::attach($event, $callback, $priority); } }