josantonius/request

该包已被废弃,不再维护。未建议替代包。

用于处理请求的PHP库。

2.0.1 2022-08-18 20:25 UTC

This package is auto-updated.

Last update: 2022-08-18 20:29:23 UTC


README

Latest Stable Version License

西班牙语版本

用于处理请求的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

手动安装

下载Request.phpValidate.php

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

使用PSR2代码标准测试使用PHPCS

composer phpcs

运行PHP Mess Detector测试以检测代码风格的不一致性

composer phpmd

运行所有之前的测试

composer tests

赞助商

如果这个项目帮助您减少了开发时间,您可以赞助我以支持我的开源工作 😊

许可

本存储库遵循MIT许可证

版权 © 2017-2022,Josantonius