项目初始化

This commit is contained in:
2026-03-18 15:54:43 +08:00
commit dfcd762e23
601 changed files with 57883 additions and 0 deletions

95
support/Request.php Normal file
View File

@@ -0,0 +1,95 @@
<?php
/**
* This file is part of webman.
*
* Licensed under The MIT License
* For full copyright and license information, please see the MIT-LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @author walkor<walkor@workerman.net>
* @copyright walkor<walkor@workerman.net>
* @link http://www.workerman.net/
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
namespace support;
/**
* Class Request
* @package support
*/
class Request extends \Webman\Http\Request
{
/** @var callable|null 参数过滤器,用于兼容 ThinkPHP 的 filter() */
protected $filter = null;
/**
* 获取请求路径(兼容 ThinkPHP去除 index.php 前缀,使 /index.php/api/xxx 等价于 /api/xxx
*/
public function path(): string
{
$path = parent::path();
if (str_starts_with($path, '/index.php')) {
$path = substr($path, 10) ?: '/';
}
return $path;
}
/**
* 获取请求参数(兼容 ThinkPHP param合并 get/postpost 优先)
* @param string|null $name 参数名null 返回全部
* @param mixed $default 默认值
* @return mixed
*/
public function param(?string $name = null, $default = null)
{
$data = $this->post() + $this->get();
if ($name === null) {
return $this->applyFilter($data);
}
if (!array_key_exists($name, $data)) {
return $default;
}
return $this->applyFilter($data[$name]);
}
/**
* 设置参数过滤器(兼容 ThinkPHP filter
* @param string $filter 过滤器名,如 'clean_xss'、'trim'
* @return $this
*/
public function filter(string $filter)
{
if ($filter === 'clean_xss' && function_exists('clean_xss')) {
$this->filter = 'clean_xss';
} elseif ($filter === 'trim') {
$this->filter = 'trim';
} else {
$this->filter = null;
}
return $this;
}
/**
* 对值应用已设置的过滤器
*/
protected function applyFilter($value)
{
if ($this->filter === null) {
return $value;
}
if (is_array($value)) {
foreach ($value as $k => $v) {
$value[$k] = $this->applyFilter($v);
}
return $value;
}
if (is_string($value) && $this->filter === 'clean_xss') {
return clean_xss($value);
}
if (is_string($value) && $this->filter === 'trim') {
return trim($value);
}
return $value;
}
}