Very large UML diagram TYPO3 has implemented the PSR-15 approach in the following way: Middleware AMiddleware BApplicationServerRequestFactoryMiddlewareStackResolverMiddlewareDispatcher .. Generated ..MiddlewareA.. Generated ..MiddlewareB.Frontend.Backend.ApplicationApplicationServerRequestFactoryServerRequestFactoryMiddlewareStackResolverMiddlewareStackResolverMiddlewareDispatcher(RequestHandlerInterface)MiddlewareDispatcher(RequestHandlerInterface)«Generated»AnonymousRequestHandler«Generated»AnonymousRequestHandlerMiddlewareAMiddlewareA«Generated»AnonymousRequestHandler«Generated»AnonymousRequestHandlerMiddlewareBMiddlewareB(Frontend|Backend)RequestHandler(Frontend|Backend)RequestHandlerEvery Middlewareis wrapped inan anonymousRequestHandlerAlways the lastRequestHandlerin the stack1fromGlobals()1Request2resolve()3Stack4handle(Request)4handle(Request)5process(Request,next RequestHandler)5handle(Request)5process(Request,next RequestHandler)6handle(Request)6Response7Response7Response7Response8Response8Response Figure 1-1: Application flow