fyre / server
A HTTP服务器请求/响应库。
Requires
- fyre/cookie: ^3.0
- fyre/filesystem: ^2.0
- fyre/negotiate: ^2.0
- fyre/request: ^3.0
- fyre/response: ^3.0
- fyre/useragent: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/datetime: ^3.0
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^10
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 参数 $options
的 supportedLocales
属性中。
客户端响应
此类扩展了 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);
此方法将返回一个表示移动文件的新的 文件 对象。