rainner/restful-php

解析所有RESTful动词(POST、PUT、DELETE、PATCH等)的原始输入体,并提供更好的处理上传文件的方式。

1.0.0 2016-01-06 02:16 UTC

This package is not auto-updated.

Last update: 2024-09-18 18:28:33 UTC


README

这是一个用于在PHP中处理HTTP输入数据的包。当一个POST请求进入PHP时,请求的内容类型(Content-Type)和内容主体(原始输入)会被处理和解析到_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许可下。