Title: ServerRequest::__construct
Published: May 20, 2026

---

# ServerRequest::__construct( string $method, string|WordPressAiClientDependenciesPsrHttpMessageUriInterface $uri, array $headers = [], string|resource|WordPressAiClientDependenciesPsrHttpMessageStreamInterface|null $body = null, string $version = '1.1', array $serverParams = [] )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#related)

[ Back to top](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#wp--skip-link--target)

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#parameters)󠁿

 `$method`stringrequired

HTTP method

`$uri`string|WordPressAiClientDependenciesPsrHttpMessageUriInterfacerequired

URI

`$headers`arrayoptional

Request headers

Default:`[]`

`$body`string|resource|WordPressAiClientDependenciesPsrHttpMessageStreamInterface
|nulloptional

Request body

Default:`null`

`$version`stringoptional

Protocol version

Default:`'1.1'`

`$serverParams`arrayoptional

Typically the $_SERVER superglobal

Default:`[]`

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#source)󠁿

    ```php
    public function __construct(string $method, $uri, array $headers = [], $body = null, string $version = '1.1', array $serverParams = [])
    {
        $this->serverParams = $serverParams;
        if (!$uri instanceof UriInterface) {
            $uri = new Uri($uri);
        }
        $this->method = $method;
        $this->uri = $uri;
        $this->setHeaders($headers);
        $this->protocol = $version;
        \parse_str($uri->getQuery(), $this->queryParams);
        if (!$this->hasHeader('Host')) {
            $this->updateHostFromUri();
        }
        // If we got no body, defer initialization of the stream until ServerRequest::getBody()
        if ('' !== $body && null !== $body) {
            $this->stream = Stream::create($body);
        }
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/php-ai-client/third-party/nyholm/psr7/serverrequest.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/php-ai-client/third-party/Nyholm/Psr7/ServerRequest.php#L41)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/php-ai-client/third-party/Nyholm/Psr7/ServerRequest.php#L41-L59)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-serverrequest/__construct/?output_format=md#related)󠁿

| Uses | Description | 
| [Uri::getQuery()](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-uri/getquery/)`wp-includes/php-ai-client/third-party/Nyholm/Psr7/Uri.php` |  | 
| [Uri::__construct()](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-uri/__construct/)`wp-includes/php-ai-client/third-party/Nyholm/Psr7/Uri.php` |  | 
| [Stream::create()](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-stream/create/)`wp-includes/php-ai-client/third-party/Nyholm/Psr7/Stream.php` |

Creates a new PSR-7 stream.

  |

| Used by | Description | 
| [Psr17Factory::createServerRequest()](https://developer.wordpress.org/reference/classes/wordpress-aiclientdependencies-nyholm-psr7-factory-psr17factory/createserverrequest/)`wp-includes/php-ai-client/third-party/Nyholm/Psr7/Factory/Psr17Factory.php` |  |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwordpress-aiclientdependencies-nyholm-psr7-serverrequest%2F__construct%2F)
before being able to contribute a note or feedback.