Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
2.1 kB · 89 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990<?php
namespace PhpMimeMailParser;
use PhpMimeMailParser\Contracts\MiddleWare as MiddleWareContracts;
/** * A stack of middleware chained together by (MiddlewareStack $next) */class MiddlewareStack{ /** * Next MiddlewareStack in chain * * @var MiddlewareStack */ protected $next;
/** * Middleware in this MiddlewareStack * * @var Middleware */ protected $middleware;
/** * Construct the first middleware in this MiddlewareStack * The next middleware is chained through $MiddlewareStack->add($Middleware) * * @param Middleware $middleware */ public function __construct(?MiddleWareContracts $middleware = null) { $this->middleware = $middleware; }
/** * Creates a chained middleware in MiddlewareStack * * @param Middleware $middleware * @return MiddlewareStack Immutable MiddlewareStack */ public function add(MiddleWareContracts $middleware) { $stack = new static($middleware); $stack->next = $this; return $stack; }
/** * Parses the MimePart by passing it through the Middleware * @param MimePart $part * @return MimePart */ public function parse(MimePart $part) { if (!$this->middleware) { return $part; } $part = call_user_func(array($this->middleware, 'parse'), $part, $this->next); return $part; }
/** * Creates a MiddlewareStack based on an array of middleware * * @param Middleware[] $middlewares * @return MiddlewareStack */ public static function factory(array $middlewares = array()) { $stack = new static; foreach ($middlewares as $middleware) { $stack = $stack->add($middleware); } return $stack; }
/** * Allow calling MiddlewareStack instance directly to invoke parse() * * @param MimePart $part * @return MimePart */ public function __invoke(MimePart $part) { return $this->parse($part); }}