# Request 类

Request 类是 HTTP 请求的面向对象表示。该类既可用于处理传入请求（例如浏览器访问应用的请求），也可用于处理传出请求（例如从应用发往第三方应用的请求）。

此类提供了两者所需的通用功能，但在实际开发中，通常会使用继承自 Request 类的子类来调用特定功能。

关于更多使用细节，请参阅 IncomingRequest 类 和 CURLRequest 类 的文档。

## 类参考

class CodeIgniter\HTTP\Request
  getIPAddress()
    返回:

      如果能检测到，则返回用户的 IP 地址；如果 IP 地址无效，则返回 `0.0.0.0`。

    返回类型:

      `string`

    返回当前用户的 IP 地址。如果 IP 地址无效，该方法将返回 `0.0.0.0`：

        <?php

        echo $request->getIPAddress();

    重要

    此方法会参考 `Config\App::$proxyIPs` 设置，并针对允许的 IP 地址返回由 HTTP 标头报告的客户端 IP。

  isValidIP($ip[, $which = ''])

    自 4.0.5 版本弃用: 请改用 Validation 类。

    重要

    此方法已废弃，将在未来版本中移除。

    参数:

      - $ip (`string`) -- IP 地址

      - $which (`string`) -- IP 协议（`ipv4` 或 `ipv6`）

    返回:

      地址有效返回 true，否则返回 false

    返回类型:

      `bool`

    输入 IP 地址，并根据其是否有效返回布尔值（true 或 false）。

    备注

    上述 $request->getIPAddress() 方法会自动验证 IP 地址。

        <?php

        if (! $request->isValidIP($ip)) {
            echo 'Not Valid';
        } else {
            echo 'Valid';
        }

    可接受可选的第二个字符串参数（`ipv4` 或 `ipv6`）来指定 IP 格式。默认情况下会同时检查两种格式。

  getMethod()
    返回:

      HTTP 请求方法

    返回类型:

      `string`

    返回 `$_SERVER['REQUEST_METHOD']`。

        <?php

        echo $request->getMethod(); // Outputs: POST

  setMethod($method)

    自 4.0.5 版本弃用: 请改用 `CodeIgniter\HTTP\Request::withMethod()`。

    参数:

      - $method (`string`) -- 设置请求方法。用于模拟请求。

    返回:

      当前请求

    返回类型:

      `Request`

  withMethod($method)

    Added in version 4.0.5.

    参数:

      - $method (`string`) -- 设置请求方法。

    返回:

      新的请求实例

    返回类型:

      `Request`

  getServer([$index = null[, $filter = null[, $flags = null]]])
    参数:

      - $index (`mixed`) -- 变量名

      - $filter (`int`) -- 要应用的过滤器类型。过滤器列表详见 PHP 手册。

      - $flags (`int|array`) -- 要应用的标志。标志列表详见 PHP 手册。

    返回:

      如果找到则返回 `$_SERVER` 项的值，否则返回 null

    返回类型:

      `mixed`

    此方法与 IncomingRequest 类 中的 `getPost()`、`getGet()` 和 `getCookie()` 类似，仅用于获取服务器数据（`$_SERVER`）：

        <?php

        $request->getServer('some_data');

    如需返回包含多个 `$_SERVER` 值的数组，请以数组形式传递所有需要的键。

        <?php

        $request->getServer(['SERVER_PROTOCOL', 'REQUEST_URI']);

  getEnv([$index = null[, $filter = null[, $flags = null]]])

    自 4.4.4 版本弃用: 此方法自始至终无法正常工作。请改用 `env()`。

    参数:

      - $index (`mixed`) -- 变量名

      - $filter (`int`) -- 要应用的过滤器类型。过滤器列表详见 PHP 手册。

      - $flags (`int|array`) -- 要应用的标志。标志列表详见 PHP 手册。

    返回:

      如果找到则返回 `$_ENV` 项的值，否则返回 null

    返回类型:

      `mixed`

    此方法与 IncomingRequest 类 中的 `getPost()`、`getGet()` 和 `getCookie()` 类似，仅用于获取环境变量数据（`$_ENV`）：

        <?php

        $request->getEnv('some_data');

    如需返回包含多个 `$_ENV` 值的数组，请以数组形式传递所有需要的键。

        <?php

        $request->getEnv(['CI_ENVIRONMENT', 'S3_BUCKET']);

  setGlobal($method, $value)
    参数:

      - $method (`string`) -- 方法名称

      - $value (`mixed`) -- 要添加的数据

    返回:

      当前请求

    返回类型:

      `Request`

    允许手动设置 PHP 全局变量的值，如 `$_GET`、`$_POST` 等。

  fetchGlobal($method[, $index = null[, $filter = null[, $flags = null]]])
    参数:

      - $method (`string`) -- 输入过滤器常量

      - $index (`mixed`) -- 变量名

      - $filter (`int`) -- 要应用的过滤器类型。过滤器列表详见 PHP 手册。

      - $flags (`int|array`) -- 要应用的标志。标志列表详见 PHP 手册。

    返回类型:

      `mixed`

    从全局变量（如 cookie、get、post 等）中获取一个或多个项目。获取时可通过传入过滤器对输入进行过滤。