/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/cakephp/src/Http
NameSizeModeActions
Client/-0755rm
Cookie/-0755rm
Exception/-0755rm
Middleware/-0755rm
Session/-0755rm
TestSuite/-0755rm
BaseApplication.php93880644editdlrm
CallbackStream.php15750644editdlrm
Client.php256240644editdlrm
composer.json15090644editdlrm
ContentTypeNegotiation.php52730644editdlrm
ControllerFactory.php2300644editdlrm
ControllerFactoryInterface.php15340644editdlrm
CorsBuilder.php60250644editdlrm
FlashMessage.php68120644editdlrm
LICENSE.txt12040644editdlrm
MiddlewareApplication.php17910644editdlrm
MiddlewareQueue.php91130644editdlrm
README.md33920644editdlrm
Response.php512180644editdlrm
ResponseEmitter.php89400644editdlrm
Runner.php30640644editdlrm
Server.php55520644editdlrm
ServerRequest.php559690644editdlrm
ServerRequestFactory.php130810644editdlrm
Session.php209880644editdlrm
Uri.php50270644editdlrm
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/cakephp/src/Http/MiddlewareQueue.php (9113B)
*/ class MiddlewareQueue implements Countable, SeekableIterator { /** * Internal position for iterator. * * @var int */ protected $position = 0; /** * The queue of middlewares. * * @var array */ protected $queue = []; /** * Constructor * * @param array $middleware The list of middleware to append. */ public function __construct(array $middleware = []) { $this->queue = $middleware; } /** * Resolve middleware name to a PSR 15 compliant middleware instance. * * @param \Psr\Http\Server\MiddlewareInterface|\Closure|string $middleware The middleware to resolve. * @return \Psr\Http\Server\MiddlewareInterface * @throws \RuntimeException If Middleware not found. */ protected function resolve($middleware): MiddlewareInterface { if (is_string($middleware)) { $className = App::className($middleware, 'Middleware', 'Middleware'); if ($className === null) { throw new RuntimeException(sprintf( 'Middleware "%s" was not found.', $middleware )); } $middleware = new $className(); } if ($middleware instanceof MiddlewareInterface) { return $middleware; } if (!$middleware instanceof Closure) { return new DoublePassDecoratorMiddleware($middleware); } $info = new ReflectionFunction($middleware); if ($info->getNumberOfParameters() > 2) { return new DoublePassDecoratorMiddleware($middleware); } return new ClosureDecoratorMiddleware($middleware); } /** * Append a middleware to the end of the queue. * * @param \Psr\Http\Server\MiddlewareInterface|\Closure|array|string $middleware The middleware(s) to append. * @return $this */ public function add($middleware) { if (is_array($middleware)) { $this->queue = array_merge($this->queue, $middleware); return $this; } $this->queue[] = $middleware; return $this; } /** * Alias for MiddlewareQueue::add(). * * @param \Psr\Http\Server\MiddlewareInterface|\Closure|array|string $middleware The middleware(s) to append. * @return $this * @see MiddlewareQueue::add() */ public function push($middleware) { return $this->add($middleware); } /** * Prepend a middleware to the start of the queue. * * @param \Psr\Http\Server\MiddlewareInterface|\Closure|array|string $middleware The middleware(s) to prepend. * @return $this */ public function prepend($middleware) { if (is_array($middleware)) { $this->queue = array_merge($middleware, $this->queue); return $this; } array_unshift($this->queue, $middleware); return $this; } /** * Insert a middleware at a specific index. * * If the index already exists, the new middleware will be inserted, * and the existing element will be shifted one index greater. * * @param int $index The index to insert at. * @param \Psr\Http\Server\MiddlewareInterface|\Closure|string $middleware The middleware to insert. * @return $this */ public function insertAt(int $index, $middleware) { array_splice($this->queue, $index, 0, [$middleware]); return $this; } /** * Insert a middleware before the first matching class. * * Finds the index of the first middleware that matches the provided class, * and inserts the supplied middleware before it. * * @param string $class The classname to insert the middleware before. * @param \Psr\Http\Server\MiddlewareInterface|\Closure|string $middleware The middleware to insert. * @return $this * @throws \LogicException If middleware to insert before is not found. */ public function insertBefore(string $class, $middleware) { $found = false; $i = 0; foreach ($this->queue as $i => $object) { /** @psalm-suppress ArgumentTypeCoercion */ if ( ( is_string($object) && $object === $class ) || is_a($object, $class) ) { $found = true; break; } } if ($found) { return $this->insertAt($i, $middleware); } throw new LogicException(sprintf("No middleware matching '%s' could be found.", $class)); } /** * Insert a middleware object after the first matching class. * * Finds the index of the first middleware that matches the provided class, * and inserts the supplied middleware after it. If the class is not found, * this method will behave like add(). * * @param string $class The classname to insert the middleware before. * @param \Psr\Http\Server\MiddlewareInterface|\Closure|string $middleware The middleware to insert. * @return $this */ public function insertAfter(string $class, $middleware) { $found = false; $i = 0; foreach ($this->queue as $i => $object) { /** @psalm-suppress ArgumentTypeCoercion */ if ( ( is_string($object) && $object === $class ) || is_a($object, $class) ) { $found = true; break; } } if ($found) { return $this->insertAt($i + 1, $middleware); } return $this->add($middleware); } /** * Get the number of connected middleware layers. * * Implement the Countable interface. * * @return int */ public function count(): int { return count($this->queue); } /** * Seeks to a given position in the queue. * * @param int $position The position to seek to. * @return void * @see \SeekableIterator::seek() */ public function seek($position): void { if (!isset($this->queue[$position])) { throw new OutOfBoundsException("Invalid seek position ($position)"); } $this->position = $position; } /** * Rewinds back to the first element of the queue. * * @return void * @see \Iterator::rewind() */ public function rewind(): void { $this->position = 0; } /** * Returns the current middleware. * * @return \Psr\Http\Server\MiddlewareInterface * @see \Iterator::current() */ public function current(): MiddlewareInterface { if (!isset($this->queue[$this->position])) { throw new OutOfBoundsException("Invalid current position ($this->position)"); } if ($this->queue[$this->position] instanceof MiddlewareInterface) { return $this->queue[$this->position]; } return $this->queue[$this->position] = $this->resolve($this->queue[$this->position]); } /** * Return the key of the middleware. * * @return int * @see \Iterator::key() */ public function key(): int { return $this->position; } /** * Moves the current position to the next middleware. * * @return void * @see \Iterator::next() */ public function next(): void { ++$this->position; } /** * Checks if current position is valid. * * @return bool * @see \Iterator::valid() */ public function valid(): bool { return isset($this->queue[$this->position]); } }