diff --git a/developer_manual/basics/middlewares.rst b/developer_manual/basics/middlewares.rst index cf256bf5b..f690776ff 100644 --- a/developer_manual/basics/middlewares.rst +++ b/developer_manual/basics/middlewares.rst @@ -28,15 +28,54 @@ To generate your own middleware, simply inherit from the Middleware class and ov /** * this replaces "bad words" with "********" in the output */ - public function beforeOutput($controller, $methodName, $output) { + public function beforeOutput($controller, $methodName, $output): string { return str_replace('bad words', '********', $output); } } -The middleware can be registered in the :doc:`dependency_injection` and added using the **registerMiddleware** method: +The middleware can be registered in the app's ``Application`` class: .. code-block:: php + :caption: lib/AppInfo/Application.php + :emphasize-lines: 20 + + registerMiddleware(CensorMiddleware::class); + } + + public function boot(IBootContext $context): void {} + + } + +Dependency Injection Container Registration +------------------------------------------- + +.. deprecated:: 20 + +Middlewares can also be added using the **registerMiddleware** method of the container: + +.. code-block:: php + :caption: lib/AppInfo/Application.php + :emphasize-lines: 14-17 getContainer(); - - /** - * Middleware - */ - $container->registerService(CensorMiddleware::class, function(IServerContainer $c): CensorMiddleware{ - return new CensorMiddleware(); - }); // executed in the order that it is registered $container->registerMiddleware(CensorMiddleware::class); @@ -100,7 +129,7 @@ Sometimes it is useful to conditionally execute code before or after a controlle /** * Add custom header if @MyHeader is used */ - public function afterController($controller, $methodName, Response $response) { + public function afterController($controller, $methodName, Response $response): Response { if($this->reflector->hasAnnotation('MyHeader')) { $response->addHeader('My-Header', 3); } @@ -108,39 +137,4 @@ Sometimes it is useful to conditionally execute code before or after a controlle } } -Now adjust the container to inject the reflector: - -.. code-block:: php - - getContainer(); - - /** - * Middleware - */ - $container->registerService(HeaderMiddleware::class, function(IServerContainer $c): HeaderMiddleware { - return new HeaderMiddleware($c->get('ControllerMethodReflector')); - }); - - // executed in the order that it is registered - $container->registerMiddleware(HeaderMiddleware::class); - } - - } - .. note:: An annotation always starts with an uppercase letter