# How access Request object on DI Container?

**URL:** <https://discourse.slimframework.com/t/how-access-request-object-on-di-container/4049>\
**Category:** Questions\
**Created:** [April 12, 2020, 3:36pm UTC](https://discourse.slimframework.com/t/how-access-request-object-on-di-container/4049 "2020-04-12T15:36:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ashuradev](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@ashuradev](https://discourse.slimframework.com/u/ashuradev)\
**Post date:** [April 12, 2020, 3:36pm UTC](https://discourse.slimframework.com/t/how-access-request-object-on-di-container/4049/1 "2020-04-12T15:36:46Z")

</div>

I need to get request headers in a dependency of container. I’m using PHP-DI with Slim-Bridge.

```php
// PHP-DI definitions file

return [
    UrlGenerator::class => function () {
        // how get $request outside of a route?
        return new UrlGenerator($request);
    }
];

```

---

<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:** [April 13, 2020, 12:15pm UTC](https://discourse.slimframework.com/t/how-access-request-object-on-di-container/4049/2 "2020-04-13T12:15:08Z")

</div>

The request and response objects are context-specific and were removed from the container in Slim 4.

To implement a UrlGenerator you could pass the $request object to the UrlGenerator instance via setRequest method.

## Example Middleware

```php
<?php

namespace App\Middleware;

use App\Factory\UrlBuilder ;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;

final class UrlBuilderMiddlware implements MiddlewareInterface
{
    /**
     * @var UrlBuilder 
     */
    private $urlBuilder ;

    public function __construct(UrlBuilder $urlBuilder)
    {
        $this->urlBuilder= $urlBuilder;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->urlBuilder->setRequest($request);

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

```

---

<div class="post-metadata">

**Author:** ![ashuradev](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@ashuradev](https://discourse.slimframework.com/u/ashuradev)\
**Post date:** [April 13, 2020, 10:29pm UTC](https://discourse.slimframework.com/t/how-access-request-object-on-di-container/4049/3 "2020-04-13T22:29:50Z")

</div>

Thanks 🙂
