承接 tebe/http-factory 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tebe/http-factory

最新稳定版本:v3.0.0

Composer 安装命令:

composer require tebe/http-factory

包简介

HTTP Factory provides automatic detection for Composer packages implementing the PSR-17 standard

README 文档

README

Travis Scrutinizer Packagist GitHub (pre-)release License PHP from Packagist

HTTP-Factory is a PHP package that implements PSR-17 HTTP factories interface. It acts as a simple facade to provide easy access to concrete HTTP factory packets. As its main feature it offers support for auto-discovery of the supported factories.

All PSR-17 interfaces are implemented:

  • Psr\Http\Message\ResponseFactoryInterface
  • Psr\Http\Message\ServerRequestFactoryInterface
  • Psr\Http\Message\StreamFactoryInterface
  • Psr\Http\Message\UploadedFileFactoryInterface
  • Psr\Http\Message\UriFactoryInterface

Additionally, it implements a createServerRequestFromGlobals method, which is not part of PSR-17.

Auto-discovering PSR-7 packages

The package features auto-discovery support for the following PSR-7 packages:

  1. laminas/laminas-diactoros
  2. guzzlehttp/psr7
  3. slim/slim
  4. nyholm/psr7

The auto-discovery mechanism assumes that you are using one (and only one) of the above PSR-7 packages in your project. The first detected PSR-17 package will then be used for all interface factory methods.

Installation

When starting a new project one of the following PSR-7 packages must be installed.

$ composer require laminas/laminas-diactoros
$ composer require guzzlehttp/psr7
$ composer require slim/slim
$ composer require nyholm/psr7

When using the "nyholm/psr7" package you have to require the "nyholm/psr7-server" package, too.

$ composer require nyholm/psr7-server

Then install the HTTP-Factory package.

$ composer require tebe/http-factory

You can now use HTTP-Factory in the codebase of your project like so:

use Tebe\HttpFactory\HttpFactory;

$factory = new HttpFactory();

# creates a ResponseInterface
$factory->createResponse(int $code = 200, string $reasonPhrase = '');

# creates a ServerRequestInterface
$factory->createServerRequest(string $method, $uri, array $serverParams = []);

# creates a ServerRequestInterface
$factory->createServerRequestFromGlobals();

# creates a StreamInterface
$factory->createStream(string $content = '');

# creates a StreamInterface
$factory->createStreamFromFile(string $filename, string $mode = 'r');

# creates a StreamInterface
$factory->createStreamFromResource($resource);

# creates an UriInterface
$factory->createUri(string $uri = '');

# creates an UploadedFileInterface
$factory->createUploadedFile(
    StreamInterface $stream, 
    int $size = null, 
    int $error = \UPLOAD_ERR_OK, 
    string $clientFilename = null, 
    string $clientMediaType = null
); 

Usage

Using constructor

use Tebe\HttpFactory\HttpFactory;

$factory = new HttpFactory();
$response = $factory->createResponse(200);
echo $response->getStatusCode();

Using static instance method

use Tebe\HttpFactory\HttpFactory;

$response = HttpFactory::instance()->createResponse(200);
echo $response->getStatusCode();

Using own strategies

use Tebe\HttpFactory\HttpFactory;

HttpFactory::setStrategies([
    DiactorosFactory::class,
    GuzzleFactory::class,
    SlimFactory::class
]);

$response = HttpFactory::instance()->createResponse(200);
echo $response->getStatusCode();

Using own factory

use Tebe\HttpFactory\HttpFactory;
use Tebe\HttpFactory\FactoryInterface;

class MyFactory implements FactoryInterface
{
    // implement interface methods
}

$factory = new HttpFactory();
$factory->setFactory(new MyFactory());
$response = $factory->createResponse(200);
echo $response->getStatusCode();

Tests

Run PHPUnit:

$ composer phpunit

Run PHP_CodeSniffer:

$ composer phpcs

Run PHP Code Beautifier and Fixer:

$ composer phpcbf

Run PHPUnit and PHP_CodeSniffer together:

$ composer test

Suggestions

Any suggestions? Open an issue.

统计信息

  • 总下载量: 4.05k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 2
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-08-18

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固