josantonius / request
用于处理请求的PHP库。
Requires
- php: ^7.4
- josantonius/validate: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.3 || ^2.8
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^5.7 || ^6.0
- squizlabs/php_codesniffer: ^3.0
README
用于处理请求的PHP库。
需求
该库支持PHP 7.4。
重要:2.x版本不支持本库的1.x版本。
重要:1.x版本已视为过时,但如果你想用于PHP 5.6版本,可以查看其文档。
安装
安装此扩展的首选方式是通过Composer。
要安装PHP请求库,只需
composer require josantonius/request
前面的命令只会安装必要的文件,如果你希望下载整个源代码,可以使用
composer require josantonius/request --prefer-source
你也可以使用Git克隆完整的仓库
$ git clone https://github.com/Josantonius/php-request.git
或手动安装
wget https://raw.githubusercontent.com/Josantonius/php-request/master/src/Request.php
wget https://raw.githubusercontent.com/Josantonius/php-validate/master/src/Validate.php
可用方法
该库中的可用方法
- 检查是否为GET请求
Request::isGet();
返回 (布尔值)
- 检查是否为POST请求
Request::isPost();
返回 (布尔值)
- 检查是否为PUT请求
Request::isPut();
返回 (布尔值)
- 检查是否为DELETE请求
Request::isDelete();
返回 (布尔值)
- 获取请求参数
对于PUT和DELETE请求,将检查内容类型以正确获取请求中接收到的数据。
与此库兼容的内容类型有
- application/atom+xml
- text/html
- text/plain
- application/json
- application/javascript
- multipart/form-data
- application/x-www-form-urlencoded
Request::input($type);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$type | 请求类型。 | 字符串 | 是 |
返回 当调用时返回请求对象的匿名函数
- 数据清洗并返回数组
asArray($filters, $default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$filters | 每个键的数据类型关联数组。不包括在过滤器中的字段将不会被清洗。 | 数组 | 否 | [] |
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(数组)→ 发生错误时将返回空数组
- 数据清洗并返回对象
asObject($filters, $default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$filters | 每个键的数据类型关联数组。不包括在过滤器中的字段将不会被清洗。 | 数组 | 否 | [] |
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(对象)→ 发生错误时将返回空对象
- 数据清洗并返回 JSON
asJson($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回字符串
asString($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回整数
asInteger($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回浮点数
asFloat($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回布尔值
asBoolean($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回 IP 地址
asIp($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回 URL
asUrl($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
- 数据清洗并返回电子邮件
asEmail($default);
属性 | 描述 | 类型 | 必需 | 默认值 |
---|---|---|---|---|
$default | 默认值。对于不匹配指定数据类型的字段,将返回 null 或默认值。 | 混合 | 否 | null |
返回(混合|null)→ 值,null 或自定义返回值
快速开始
使用 Composer 与此库结合使用
require __DIR__ . '/vendor/autoload.php'; use Josantonius\Request\Request;
或者,如果您已手动安装,请使用它
require_once __DIR__ . '/Request.php'; require_once __DIR__ . '/Validate.php'; use Josantonius\Request\Request; use Josantonius\Validate\Validate;
用法
对于示例,将模拟请求中接收到的以下数据
请求中接收到的示例数据
'user_name' => 'John' 'user_surname' => 'Doe' 'user_age' => 35 'user_rating' => 8.5 'user_ip' => '89.58.54.188' 'user_website' => 'http://www.site.com/' 'user_email' => 'john@site.com' 'user_address' => [ 'street' => 'unknown' 'locality' => 'Seville' 'country' => 'Spain' ] 'is_active' => true
此库的用法示例
- 检查是否为 GET 请求
Request::isGet(); // true or false
- 检查是否为 POST 请求
Request::isPost(); // true or false
- 检查是否为 PUT 请求
Request::isPut(); // true or false
- 检查是否为 DELETE 请求
Request::isDelete(); // true or false
- 访问请求参数
$_GET = Request::input('GET'); $_POST = Request::input('POST'); $_PUT = Request::input('PUT'); $_DELETE = Request::input('DELETE');
返回一个匿名函数,当调用时将返回请求对象。
- 作为数组
- 获取并清洗所有数据,并以数组形式返回
$array = $_GET()->asArray(); $array = $_POST()->asArray(); $array = $_PUT()->asArray(); $array = $_DELETE()->asArray();
var_dump($array); /* array(9) { ["user_name"]=> string(4) "John" ["user_surname"]=> string(3) "Doe" ["user_age"]=> int(35) ["user_rating"]=> float(8.5) ["user_ip"]=> string(12) "89.58.54.188" ["user_website"]=> string(20) "http://www.site.com/" ["user_email"]=> string(13) "john@site.com" ["user_address"]=> array(3) { ["street"]=> string(7) "unknown" ["locality"]=> string(7) "Seville" ["country"]=> string(5) "Spain" } ["is_active"]=> bool(true) } */
- 获取、清理所有数据并将它们作为数组返回,并根据数据类型过滤每个值
$filters = [ 'user_name' => 'string', 'user_age' => 'string', 'is_online' => 'boolean' ]; $array = $_GET()->asArray($filters); $array = $_POST()->asArray($filters); $array = $_PUT()->asArray($filters); $array = $_DELETE()->asArray($filters);
var_dump($array['user_name']); // string(4) "John" var_dump($array['user_age']); // string(2) "35" (although an integer is received, it's returned as a string) var_dump($array['user_age']); // NULL (doesn't exist, the default value is returned)
- 获取、清理所有数据并将它们作为数组返回,过滤每个值并根据数据类型指定每个键的值,当其错误时
$filters = [ 'user_rating' => 'float', 'is_active' => 'boolean', 'is_online' => 'boolean' ]; $array = $_GET()->asArray($filters, ''); $array = $_POST()->asArray($filters, ''); $array = $_PUT()->asArray($filters, ''); $array = $_DELETE()->asArray($filters, '');
var_dump($array['user_rating']); // float(8.5) var_dump($array['is_active']); // bool(true) var_dump($array['is_online']); // string(0) "" (doesn't exist, the default value is returned)
- 作为对象
- 获取并清理所有数据并将它们作为对象返回
$object = $_GET()->asObject(); $object = $_POST()->asObject(); $object = $_PUT()->asObject(); $object = $_DELETE()->asObject();
var_dump($object); /* object(stdClass)#1 (9) { ["user_name"]=> string(4) "John" ["user_surname"]=> string(3) "Doe" ["user_age"]=> int(35) ["user_rating"]=> float(8.5) ["user_ip"]=> string(12) "89.58.54.188" ["user_website"]=> string(20) "http://www.site.com/" ["user_email"]=> string(13) "john@site.com" ["user_address"]=> object(stdClass)#2 (3) { ["street"]=> string(7) "unknown" ["locality"]=> string(7) "Seville" ["country"]=> string(5) "Spain" } ["is_active"]=> bool(true) } */
- 获取、清理所有数据并将它们作为对象返回,并根据数据类型过滤每个值
$filters = [ 'user_name' => 'string', 'user_age' => 'integer', 'is_online' => 'boolean' ]; $object = $_GET()->asObject($filters); $object = $_POST()->asObject($filters); $object = $_PUT()->asObject($filters); $object = $_DELETE()->asObject($filters);
var_dump($object->user_name); // string(4) "John" var_dump($object->user_age); // int(35) var_dump($object->user_age); // NULL (doesn't exist, the default value is returned)
- 获取、清理所有数据并将它们作为对象返回,过滤每个值并根据数据类型指定每个键的值,当其错误时
$filters = [ 'user_rating' => 'float', 'user_surname' => 'boolean', 'is_online' => 'boolean', 'is_member' => 'boolean' ]; $object = $_GET()->asObject($filters, false); $object = $_POST()->asObject($filters, false); $object = $_PUT()->asObject($filters, false); $object = $_DELETE()->asObject($filters, false);
var_dump($object->user_rating); // float(8.5) var_dump($object->user_surname); // string(3) "Doe" var_dump($object->is_online); // bool(false) (doesn't exist, the default value is returned) var_dump($object->is_member); // bool(false) (doesn't exist, the default value is returned)
- 作为JSON
- 获取并清理所有数据并将它们作为JSON返回
$json = $_GET()->asJson(); $json = $_POST()->asJson(); $json = $_PUT()->asJson(); $json = $_DELETE()->asJson();
var_dump($json); /* string(260) "{"user_name":"John","user_surname":"Doe","user_age":35,"user_rating":8.5,"user_ip":"89.58.54.188","user_website":"http:\/\/www.site.com\/","user_email":"john@site.com","user_address":{"street":"unknown","locality":"Seville","country":"Spain"},"is_active":true}" */
- 获取特定键值、清理数据并将它们作为JSON返回
$json = $_GET('user_address')->asJson(); var_dump($json); // string(59) "{"street":"unknown","locality":"Seville","country":"Spain"}"
$json = $_POST('user_name')->asJson(); var_dump($json); // string(6) ""John""
$json = $_PUT('is_online')->asJson(); var_dump($json); // NULL (doesn't exist, the default value is returned)
$json = $_DELETE('user_address')->asJson([]); var_dump($json); // string(2) "[]" (doesn't exist, the default value is returned)
- 作为字符串
- 获取特定键值、清理数据并将它们作为字符串返回
$string = $_GET('user_age')->asString(); var_dump($string); // string(2) "35" (although an integer is received, it's returned as a string)
$string = $_POST('user_name')->asString(); var_dump($string); // string(4) "John"
$string = $_PUT('user_address')->asString(); var_dump($string); // NULL (it's an array, the default value is returned)
$string = $_DELETE('user_address')->asString('unknown'); var_dump($string); // string(7) "unknown" (it's an array, the default value is returned)
- 作为整数
- 获取特定键值、清理数据并将它们作为整数返回
$integer = $_GET('user_age')->asInteger(); var_dump($integer); // int(35)
$integer = $_PUT('user_rating')->asInteger(); var_dump($integer); // NULL (it's a float, the default value is returned)
$integer = $_DELETE('user_rating')->asInteger(5); var_dump($integer); // int(5) (it's a float, the default value is returned)
- 作为浮点数
- 获取特定键值、清理数据并将它们作为浮点数返回
$float = $_GET('user_age')->asFloat(); var_dump($float); // float(35) (although an integer is received, it's returned as a float)
$float = $_POST('user_rating')->asFloat(); var_dump($float); // float(8.5)
$float = $_PUT('user_name')->asFloat(); var_dump($float); // NULL (it's a string, the default value is returned)
$float = $_DELETE('user_name')->asFloat(5.5); var_dump($float); // float(5.5) (it's a string, the default value is returned)
- 作为布尔值
- 获取特定键值、清理数据并将它们作为布尔值返回
$_GET['is_active'] = true; $boolean = $_GET('is_active')->asBoolean(); var_dump($boolean); // bool(true)
$_GET['is_active'] = 'true'; $boolean = $_GET('is_active')->asBoolean(); var_dump($boolean); // bool(true)
$_POST['is_active'] = '1'; $boolean = $_POST('is_active')->asBoolean(); var_dump($boolean); // bool(true)
$_POST['is_active'] = 1; $boolean = $_POST('is_active')->asBoolean(); var_dump($boolean); // bool(true)
$_GET['is_active'] = false; $boolean = $_GET('is_active')->asBoolean(); var_dump($boolean); // bool(false)
$_GET['is_active'] = 'false'; $boolean = $_GET('is_active')->asBoolean(); var_dump($boolean); // bool(false)
$_POST['is_active'] = '0'; $boolean = $_POST('is_active')->asBoolean(); var_dump($boolean); // bool(false)
$_POST['is_active'] = 0; $boolean = $_POST('is_active')->asBoolean(); var_dump($boolean); // bool(false)
$boolean = $_PUT('user_name')->asBoolean(); var_dump($boolean); // NULL (it's a string, the default value is returned)
$boolean = $_DELETE('is_online')->asBoolean(false); var_dump($boolean); // bool(false) (doesn't exist, the default value is returned)
- 作为IP
- 获取特定键值、清理数据并将它们作为IP返回
$ip = $_GET('user_ip')->asIp(); var_dump($ip); // string(12) "89.58.54.188"
$ip = $_POST('user_rating')->asIp(); var_dump($ip); // NULL (it's not an IP, the default value is returned)
$ip = $_DELETE('user_name')->asIp("87.32.48.164"); var_dump($ip); // string(12) "87.32.48.164" (it's not an IP, the default value is returned)
- 作为URL
filterRequest
- 获取特定键值,清洗数据并作为URL返回
$url = $_GET('user_website')->asUrl(); var_dump($url); // string(20) "http://www.site.com/"
$url = $_POST('user_rating')->asUrl(); var_dump($url); // NULL (it's not an URL, the default value is returned)
$url = $_DELETE('user_name')->asUrl("http://www.site.com/"); var_dump($url); // string(20) "http://www.site.com/" (it's not an URL, the default value is returned)
- 作为电子邮件
- 获取特定键值,清洗数据并作为电子邮件返回
$email = $_GET('user_website')->asEmail(); var_dump($email); // string(13) "john@site.com"
$email = $_POST('user_rating')->asEmail(); var_dump($email); // NULL (it's not an email, the default value is returned)
$email = $_DELETE('user_name')->asEmail("john@site.com"); var_dump($email); // string(13) "john@site.com" (it's not an email, the default value is returned)
测试
要运行测试,您只需要composer并执行以下命令
git clone https://github.com/Josantonius/php-request.git
cd php-request
composer install
使用PHPUnit运行单元测试
gnome-terminal -e 'php -S localhost:8000 -t tests/'
composer phpunit
composer phpcs
运行PHP Mess Detector测试以检测代码风格的不一致性
composer phpmd
运行所有之前的测试
composer tests
赞助商
如果这个项目帮助您减少了开发时间,您可以赞助我以支持我的开源工作 😊
许可
本存储库遵循MIT许可证。
版权 © 2017-2022,Josantonius