请求(Request)
更新时间:2024年5月20日 03:44
浏览:800
请求对象 通过 Be::getRequest() 获取,主要用来处理用户提交的数据。
get - 获取 GET 数据
public function get(string $name = null, $default = null, $format = 'string')
参数:
- $name - GET 参数名,支持点号获取数组数据
- $default - 未提交该参数时,指定默认值
- $format - 格式化
其中 第三个参数 $format 用于格式化数据,支持以下格式:
- int - 整数格式
- float - 浮点数格式
- bool - 布尔值
- string - 默认值 使用 htmlspecialchars,防止用户注入 html 代码
- html - 保留除 <script>. <style> <iframe> 外的 html 标签
- ip - IP 地址格式
- 回调函数 - 按回调函数逻辑处理
- 空字符串 - 返回原始数据
请求对象所有函数中出现的 $format 参数,均支持以上格式化功能
代码示例:
$request = Be::getRequest();
// 获取GET 数据 age
$age = $request->get('age');
// 不存在时给赋认值
$age = $request->get('age', 18);
// 指定 int 格式
$age = $request->get('age', 18, 'int');
// 未指定参数时,将返回所有 GET 数据
$array = $request->get();
// 数组形式的 GET 数据
// ?user[name]=abc&user[age]=20
$name = $request->get('user.name', '', '');
$age = $request->get('user.age', 18, 'int');
$userArray = $request->get('user'); // 数组
post - 获取 POST 数据
public function post(string $name = null, $default = null, $format = 'string');
参数:
- $name - POST 参数名,支持点号获取数组数据
- $default - 未提交该参数时,指定默认值
- $format - 格式化
代码示例:
$request = Be::getRequest();
// 获取 POST 数据 description,HTML 格式
$description = $request->post('description', '', 'html');
// 获取 POST 数据 description,原始数据
$description = $request->post('description', '', '');
// 未指定参数时,将返回所有 POST 数据
$array = $request->post();
request - 获取 REQUEST 数据
public function request(string $name = null, $default = null, $format = 'string')
参数:
- $name - REQUEST 参数名,支持点号获取数组数据
- $default - 未提交该参数时,指定默认值
- $format - 格式化
json - 获取请求体中的 JSON 数据
public function json(string $name = null, $default = null, $format = null)
参数:
- $name - 参数名,支持点号获取数组数据
- $default - 未提交该参数时,指定默认值
- $format - 格式化
不同于传统表单,json 法用于获取 在 body 体中提交的 JSON 数据(php://input)。
代码示例:
$request = Be::getRequest();
$jsonData = $request->json(); // 获取完整的 JSON 数据
$name = $request->json(‘name’); // 获取 JSON 数据中的某个字段
$name = $request->json(‘user.name’); // 获取 JSON 数据中的数组字段
cookie - 获取 COOKIE 数据
public function cookie(string $name = null, $default = null, $format = 'string')
参数:
- $name - COOKIE 参数名
- $default - 未提交该参数时,指定默认值
- $format - 格式化
$request = Be::getRequest();
$userId = $request->cookie('userId');
header - 获取 HEADER 数据
public function header(string $name = null, $default = null, $format = 'string')
参数:
- $name - HEADER 参数名
- $default - 未提交该参数时,指定默认值
- $format - 格式化
代码示例:
$request = Be::getRequest();
// 普通 php模式下将获取 Header 参数: HTTP_USER_AGENT
// Swoole 械式下将获取 Header 参数: user-agent
$userAgent = $request->header('user-agent');
server - 获取 SERVER 数据
public function server(string $name = null, $default = null, $format = 'string')
参数:
- $name - SERVER 参数名
- $default - 未提交该参数时,指定默认值
- $format - 格式化
代码示例:
$request = Be::getRequest();
// 普通 php模式下将获取 Server 参数: HTTP_REMOTE_ADDR
// Swoole 械式下将获取 Server 参数: remote_addr
$remoteAddr = $request->server('remote_addr');
普通 PHP 模式下,header 参数 与 server 参数均从 $_SERVER 变量中提取。而Swoole Http Server 中,header 和 server 是隔离的,BE 框架设计时,按照了 Swoole 的隔离策略,
files - 获取上传的文件
public function files(string $name = null)
getInput - 获取请求体中的原始数据
public function getInput(): string
即 php://input 中的原始数据
isGet - 当前是否为 GET 请求
public function isGet(): bool
代码示例:
$request = Be::getRequest();
if ($request->isGet()) {
// ...
}
isPost - 当前是否为 POST 请求
public function isPost(): bool
isAjax - 当前是否为 AJAX 请求
public function isAjax(): bool
isMobile - 是否通过手机访问
public function isMobile(): bool
getMethod - 获取当前请求的方法类型
public function getMethod(): string
返回值: GET / POST / ...
getScheme - 获取当前请求的通讯协议
public function getScheme(): string
返回值: http / https
getDomain - 获取当前请求的域名,即服务器名 server name
public function getDomain(): string
getHost - 获取当前请求的主机名,包含端口号
public function getHost(): string
getPort - 获取当前请求的端口号
public function getPort(): int
getIp - 获取访问者的 IP 地址
public function getIp(bool $detectProxy = true): string
参数:
- $detectProxy - 检测代理,用户访问如有经代理服务器转发,将获取代理前的 真实IP
代码示例:
$request = Be::getRequest();
// 访客真实IP
$ip = $request->getIp();
getUrl - 获取当前访问的完整网址
public function getUrl(): string
代码示例:
$request = Be::getRequest();
// 返回完整的网址,示例:https://www.phpbe.com/doc/v2/setup
$url = $request->getUrl();
getRootUrl - 获取当前访问的根网址
public function getRootUrl(): string
代码示例:
$request = Be::getRequest();
// 返回完整的网址,示例:https://www.phpbe.com
$rootUrl = $request->getRootUrl();
getReferer - 获取来源网址
public function getReferer(): string
isAdmin - 获取当前执行的是否后台功能
public function isAdmin(): bool
getAppName - 获取当前执行的 APP 名
public function getAppName(): string
返回值示例:Cms
getControllerName - 获取当前执行的 控制器 名
public function getControllerName(): string
返回值示例:Article
getActionName - 获取当前执行的 动作 名
public function getActionName(): string
返回值示例:detail
getRoute - 获取当前执行的 路径(应用名.控制器名.动作名)
public function getRoute(): string
返回值示例:Cms.Article.detail
getThemeName - 获取当前请求生效的主题
public function getThemeName(): string
访问某个页面时, 可通过 GET 参数 be-theme 强制使用某个主是,/?be-theme=xxx
getRequest - 获取原生 Request 对像,仅适用 swoole 模式下
public function getRequest(): \Swoole\Http\Request
快捷访问
请求对象提供了快捷访问类名:Request,可直接通过静态方法访问。
代码示例:
<?php
use Be\Request
$id = Request::get('id', '');
if (Request::isMobile()) {
// ...
}
$rootUrl = Request::getRootUrl();