fyre/server

A HTTP服务器请求/响应库。

v3.2.0 2024-09-24 12:22 UTC

README

FyreServer 是一个免费、开源的不可变HTTP服务器请求/响应库,适用于 PHP

目录

安装

使用Composer

composer require fyre/server

在PHP中

use Fyre\Server\ClientResponse;
use Fyre\Server\DownloadResponse;
use Fyre\Server\RedirectResponse;
use Fyre\Server\ServerRequest;

服务器请求

此类扩展了 Request 类。

  • $options 是一个包含配置选项的数组。
    • baseUri 是一个表示要使用的基准URI的字符串。
    • method 是一个表示请求方法的字符串,默认为服务器请求方法。
    • body 是一个表示请求体的字符串,默认为 php://input 的值。
    • headers 是一个包含要设置的标头的数组,默认为服务器标头。
    • defaultLocale 是一个表示默认区域设置的字符串,默认为系统默认值。
    • supportedLocales 是一个包含支持的区域设置的数组。
    • protocolVersion 是一个表示协议版本的字符串,默认为 "1.1"。
$request = new ServerRequest($options);

您还可以访问一个共享的 ServerRequest 实例。

$request = ServerRequest::instance();

获取Cookie

$_COOKIE 数组中获取一个值。

  • $key 是一个表示使用 "点" 表示法的数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getCookie($key, $filter, $options);

如果省略了 $key 参数,则此方法将返回一个包含所有值的数组。

$values = $request->getCookie();

获取数据

$_POST 数组或JSON正文数据中获取一个值。

  • $key 是一个表示使用 "点" 表示法的数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getData($key, $filter, $options);

如果省略了 $key 参数,则此方法将返回一个包含所有值的数组。

$values = $request->getData();

获取默认区域

获取默认区域。

$defaultLocale = $request->getDefaultLocale();

获取环境

$_ENV 数组中获取一个值。

  • $key 是一个表示数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getEnv($key, $filter, $options);

获取文件

$_FILE 数组中获取一个 UploadedFile 或文件数组。

  • $key 是一个表示使用 "点" 表示法的数组键的字符串。
$file = $request->getFile($key);

如果省略了 $key 参数,则此方法将返回一个包含所有文件的数组。

$files = $request->getFile();

获取JSON

从JSON正文数据中获取一个值。

  • $key 是一个表示使用 "点" 表示法的数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getJson($key, $filter, $options);

如果省略了 $key 参数,则此方法将返回一个包含所有值的数组。

$values = $request->getJson();

获取区域

获取当前区域。

$locale = $request->getLocale();

获取POST

$_POST 数组中获取一个值。

  • $key 是一个表示使用 "点" 表示法的数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getPost($key, $filter, $options);

如果省略了 $key 参数,则此方法将返回一个包含所有值的数组。

$values = $request->getPost();

获取查询

$_GET 数组中获取一个值。

  • $key 是一个表示使用 "点" 表示法的数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getQuery($key, $filter, $options);

如果省略了 $key 参数,则此方法将返回一个包含所有值的数组。

$values = $request->getQuery();

获取服务器

$_SERVER 数组中获取一个值。

  • $key 是一个表示数组键的字符串。
  • $filter 是一个表示要应用的过滤器的数字,默认为 FILTER_DEFAULT
  • $options 是一个数字或包含要使用的标志的数组,默认为 0
$value = $request->getServer($key, $filter, $options);

如果省略了 $key 参数,则此方法将返回一个包含所有值的数组。

$values = $request->getServer();

获取用户代理

获取用户代理。

$userAgent = $request->getUserAgent();

此方法将返回一个 UserAgent

是否为AJAX

确定请求是否使用AJAX执行。

$isAjax = $request->isAjax();

是否为CLI

确定请求是否从CLI执行。

$isCli = $request->isCli();

是否安全

确定请求是否使用HTTPS。

$isSecure = $request->isSecure();

协商

从HTTP标头中协商一个值。

  • $type 是一个表示要执行的协商类型的字符串,必须是 "content"、" "encoding" 或 "language" 之一。
  • $supported 是一个包含支持值的数组。
  • $strict 是一个布尔值,表示是否使用默认回退,默认为 false
$value = $request->negotiate($type, $supported, $strict);

设置区域设置

设置当前区域设置。

  • $locale 是一个表示区域设置的字符串。
$newRequest = $request->setLocale($locale);

区域设置必须存在于 ServerRequest 参数 $optionssupportedLocales 属性中。

客户端响应

此类扩展了 Response 类。

  • $options 是一个包含配置选项的数组。
    • body 是一个表示消息体的字符串,默认为 ""。
    • headers 是一个包含要设置的额外标题的数组。
    • protocolVersion 是一个表示协议版本的字符串,默认为 "1.1"。
    • statusCode 是一个表示状态码的数字,默认为 200
$response = new ClientResponse($options);

删除 Cookie

  • $name 是一个表示 Cookie 名称的字符串。
  • $options 是一个包含 Cookie 选项的数组。
    • domain 是一个表示 Cookie 域的字符串,默认为 ""。
    • path 是一个表示 Cookie 路径的字符串,默认为 "/"。
    • secure 是一个布尔值,表示是否设置安全 Cookie,默认为 false
    • httpOnly 是一个布尔值,表示 Cookie 是否为 HTTP 只,默认为 false
    • sameSite 是一个表示 Cookie same site 的字符串,默认为 "Lax"。
$newResponse = $response->deleteCookie($name, $options);

获取Cookie

  • $name 是一个表示 Cookie 名称的字符串。
$cookie = $response->getCookie($name);

此方法将返回一个 Cookie

存在 Cookie

确定是否设置了 Cookie。

  • $name 是一个表示 Cookie 名称的字符串。
$hasCookie = $response->hasCookie($name);

无缓存

设置标题以防止浏览器缓存。

$newResponse = $response->noCache();

发送

将响应发送到客户端。

$response->send();

设置内容类型

设置内容类型标题

  • $mimeType 是一个表示 MIME 类型的字符串。
  • $charset 是一个表示字符集的字符串,默认为 "UTF-8"。
$newResponse = $response->setContentType($mimeType, $charset);

设置 Cookie

设置 Cookie 值。

  • $name 是一个表示 Cookie 名称的字符串。
  • $value 是一个表示 Cookie 值的字符串。
  • $options 是一个包含 Cookie 选项的数组。
    • expires 是一个表示 Cookie 生命周期的数字,默认为 0
    • domain 是一个表示 Cookie 域的字符串,默认为 ""。
    • path 是一个表示 Cookie 路径的字符串,默认为 "/"。
    • secure 是一个布尔值,表示是否设置安全 Cookie,默认为 false
    • httpOnly 是一个布尔值,表示 Cookie 是否为 HTTP 只,默认为 false
    • sameSite 是一个表示 Cookie same site 的字符串,默认为 "Lax"。
$newResponse = $response->setCookie($name, $value, $options);

设置日期

设置日期标题。

  • $date 是一个表示日期的字符串、数字或 DateTime 对象。
$newResponse = $response->setDate($date);

设置 JSON

设置 JSON 响应。

  • $data 是要发送的数据。
$newResponse = $response->setJson($data);

设置最后修改日期

设置最后修改日期标题。

  • $date 是一个表示日期的字符串、数字或 DateTime 对象。
$newResponse = $response->setLastModified($date);

设置 XML

设置 XML 响应。

  • $data 是包含要发送数据的 SimpleXMLElement
$newResponse = $response->setXml($data);

下载响应

此类扩展了 ClientResponse 类。

  • $path 是一个表示文件路径的字符串。
  • $options 是一个包含配置选项的数组。
    • filename 是一个表示下载文件名的字符串,默认为文件名。
    • mimeType 是一个表示 MIME 类型的字符串,默认为文件的 MIME 类型。
    • headers 是一个包含要设置的额外标题的数组。
    • protocolVersion 是一个表示协议版本的字符串,默认为 "1.1"。
    • statusCode 是一个表示状态码的数字,默认为 200
$response = new DownloadResponse($path, $options);

从二进制

  • $data 是一个表示文件数据的字符串。
  • $options 是一个包含配置选项的数组。
    • filename 是一个表示下载文件名的字符串,默认为文件名。
    • mimeType 是一个表示 MIME 类型的字符串,默认为文件的 MIME 类型。
$response = DownloadResponse::fromBinary($data, $options);

获取文件

获取下载 File

$file = $response->getFile();

重定向响应

此类扩展了 ClientResponse 类。

  • $uri 是一个 Uri 或表示要重定向到的 URI 的字符串。
  • $code 是一个表示标题状态码的数字,默认为 302
  • $options 是一个包含配置选项的数组。
$response = new RedirectResponse($uri, $code $options);

上传文件

此类扩展了 File 类。

客户端扩展

获取客户端扩展。

$extension = $uploadedFile->clientExtension();

客户端 MIME 类型

获取客户端 MIME 类型。

$mimeType = $uploadedFile->clientMimeType();

客户端名称

获取客户端文件名。

$name = $uploadedFile->clientName();

错误

获取上传错误代码。

$error = $uploadedFile->error();

已移动

确定上传文件是否已移动。

$hasMoved = $uploadedFile->hasMoved();

有效

确定上传文件是否有效。

$isValid = $uploadedFile->isValid();

移动到

移动上传文件。

  • $destination 是表示目标文件夹的字符串。
  • $name 是表示新文件名的字符串,默认为客户端名称。
$file = $uploadedFile->moveTo($destination, $name);

此方法将返回一个表示移动文件的新的 文件 对象。