开发文档 v2.x

请求(Request)

更新时间:2022年11月26日 12:20 浏览:466

请求对象 通过 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();

 

导航