# Slim 4 return $next($request, $response) vs return $response

**URL:** <https://discourse.slimframework.com/t/slim-4-return-next-request-response-vs-return-response/3423>\
**Category:** Questions\
**Created:** [September 4, 2019, 9:30am UTC](https://discourse.slimframework.com/t/slim-4-return-next-request-response-vs-return-response/3423 "2019-09-04T09:30:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![brainstorm](https://avatars.discourse-cdn.com/v4/letter/b/919ad9/32.png) [@brainstorm](https://discourse.slimframework.com/u/brainstorm)\
**Post date:** [September 4, 2019, 9:30am UTC](https://discourse.slimframework.com/t/slim-4-return-next-request-response-vs-return-response/3423/1 "2019-09-04T09:30:32Z")

</div>

Hello, in Slim v3, I can modify $request object inside a Middleware. With Slim v4, I can’t return new $request object to others Middleware, as it only returns $response. How can I do?

---

<div class="post-metadata">

**Author:** ![odan](https://avatars.discourse-cdn.com/v4/letter/o/9de053/32.png) [@odan](https://discourse.slimframework.com/u/odan)\
**Post date:** [September 4, 2019, 9:39am UTC](https://discourse.slimframework.com/t/slim-4-return-next-request-response-vs-return-response/3423/2 "2019-09-04T09:39:53Z")

</div>

Have you tried using the `handle` method?

```php
$response = $handler->handle($request);

```

[http://www.slimframework.com/docs/v4/concepts/middleware.html](http://www.slimframework.com/docs/v4/concepts/middleware.html)

---

<div class="post-metadata">

**Author:** ![brainstorm](https://avatars.discourse-cdn.com/v4/letter/b/919ad9/32.png) [@brainstorm](https://discourse.slimframework.com/u/brainstorm)\
**Post date:** [September 4, 2019, 9:57am UTC](https://discourse.slimframework.com/t/slim-4-return-next-request-response-vs-return-response/3423/3 "2019-09-04T09:57:37Z")

</div>

I have read documentation but it says: Each middleware **MUST** return an instance of `Psr\Http\Message\ResponseInterface`, no $request returned. How can I use Handler to modify $request object and return the modified $request to other Middlewares?

---

<div class="post-metadata">

**Author:** ![Antnee](https://avatars.discourse-cdn.com/v4/letter/a/919ad9/32.png) [@Antnee](https://discourse.slimframework.com/u/Antnee)\
**Post date:** [September 4, 2019, 10:21am UTC](https://discourse.slimframework.com/t/slim-4-return-next-request-response-vs-return-response/3423/4 "2019-09-04T10:21:46Z")

</div>

You modify the request as you need to inside your middleware, then pass it on. So:

```php
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
    $request = $request->withAttribute('foo', 'bar');

    return $handler->handle($request);
}

```
