webberwu/restful-php

此包是从 rainner/restful-php 分支出来的,它可以解析所有 RESTful 动词(POST、PUT、DELETE、PATCH 等)的原始输入体,并提供一种更好的处理上传文件的方法。

1.0.2 2019-11-08 09:10 UTC

This package is auto-updated.

Last update: 2024-09-08 20:06:53 UTC


README

此包是从 rainner/restful-php 分支出来的。

这是一个用于在 PHP 中处理 HTTP 输入数据的包。当一个 POST 请求进入 PHP 时,请求的内容类型和内容体(原始输入)会被处理并解析到 _POST/_FILES 数组中。此包将所有 RESTful 动词(POST、PUT、DELETE、PATCH 等)的原始输入体解析到 _REQUEST/_FILES 数组中,并提供一种更好的处理上传文件的方法。

HTTP 输入解析器使用方法

解析器类会执行 PHP 已经为 GET/POST 数据执行的操作,但会针对所有其他 REQUEST_METHOD 动词,并将数据放入 $_REQUEST 和 $_FILES 超全局变量中 (不包括 $_COOKIE)

此类会查看请求的 Content-Type 以决定如何解析请求的原始内容体。只要请求格式正确,它应该可以无任何问题地工作。目前它可以解析以下内容类型

  • text/plain 作为 INI 数据。
  • text/html 作为 HTML 格式数据。
  • application/json 作为 JSON 编码数据。
  • application/x-www-form-urlencoded 作为 URL 编码数据。
  • application/xml 作为 XML 格式数据。
  • multipart/form-data 作为多部分表单数据。

支持多维数组类型属性名(multi[level][name]),并由此类解析为常规数组。

// parse incoming request data
$request = new Restful\Parser();
$request->parse();

// preview
echo '<pre>'.print_r( $_REQUEST, true ).'</pre>' . "\n";
echo '<pre>'.print_r( $_FILES, true ).'</pre>' . "\n";
exit;

Restful\Parser 公共方法

HTTP 文件管理器

Files 类将接受 $_FILES 数组并重新格式化结构,使其更容易处理多个文件上传和嵌套的多维数组键,例如

<form>
    <input type="file" name="files[avatar]" accept="image/*" />
    <input type="file" name="files[photos][]" accept="image/*" multiple />
</form>

上面的表单将有两个文件对话框按钮,一个接受单个文件,另一个接受多个文件。以下是使用 Files 类访问这些文件的方法

// import and format files from the $_FILES array
$files = new Restful\Files();
$files->parse();

// work on the avatar image
$files->loopFiles( 'files.avatar', function( $file )
{
    // save to db, process, etc...
    echo $file['tmp_name'] ." <br /> \n";
});

// move photos to a folder
$photos = $files->moveFiles( 'files.photos', '/path/to/uploads' );
foreach( $photos as $photo )
{
    // check each file for upload/move errors
    echo !empty( $photo['error'] ) ? $photo['error'] : 'Success';
    echo "<br /> \n";
}

Restful\Files 公共方法

安装 & 设置

手动:在项目的某个位置克隆此仓库,并使用包含的自动加载器来加载包含的类

$ cd /path/to/project/libs
$ git clone https://github.com/rainner/restful-php.git
<?php
require( './libs/restful-php/autoloader.php' )

Composer:运行以下 composer 命令以包含此包并安装项目的依赖项

$ composer require rainner/restful-php 1.*

作者

Rainner Lins: @raintek_

许可证

许可协议为 MIT