bentools/uri-factory

PSR-7 URI工厂

2.3 2023-06-21 14:18 UTC

This package is auto-updated.

Last update: 2024-09-21 16:46:57 UTC


README

Latest Stable Version License Build Status Coverage Status Quality Score Total Downloads

Uri Factory

一个与库/框架无关的PSR-7 UriInterface 工厂。

在Packagist上有几个PSR-7库,但每个库都有自己的工厂,用于从字符串创建一个UriInterface对象。

bentools/uri-factory没有显式依赖,会自动选择你最喜欢的库来创建UriInterface实例。

目前支持的库

  • guzzlehttp/psr7
  • league/uri
  • nyholm/psr7
  • ringcentral/psr7

使用方法

任何URL字符串上

use function BenTools\UriFactory\Helper\uri;
$uri = uri('http://www.example.net'); // Will convert to a Psr\Http\Message\UriInterface instance

当前位置上

use function BenTools\UriFactory\Helper\current_location;
$uri = current_location(); // Will convert the current location to a Psr\Http\Message\UriInterface instance

您可以通过使用相应的适配器来指定要使用的库

use BenTools\UriFactory\Adapter\GuzzleAdapter;
use BenTools\UriFactory\Adapter\LeagueUriAdapter;
use function BenTools\UriFactory\Helper\current_location;
use function BenTools\UriFactory\Helper\uri;

$uri = uri('http://www.example.net', GuzzleAdapter::factory());
$uri = uri('http://www.example.net', LeagueUriAdapter::factory());

$uri = current_location(GuzzleAdapter::factory());
$uri = current_location(LeagueUriAdapter::factory());

规范化器

此库附带了一个URL规范化器。

它可能不是完美的,因为您的PSR-7库可能在特殊字符方面表现不同,但它应该大多数情况下都能工作。

canonicalize()函数接受任何PSR-7 UriInterface对象,并将返回一个规范化的对象。

require_once __DIR__ . '/vendor/autoload.php';

use function BenTools\UriFactory\Helper\canonicalize;
use function BenTools\UriFactory\Helper\uri;

$url = 'http://example.org../foo/../bar/?#baz';
echo canonicalize(uri($url)); // http://example.org/bar/

安装

需要PHP 8.0+。

composer require bentools/uri-factory

测试

./vendor/bin/phpunit

贡献

如果您想bentools/uri-factory支持更多的PSR-7库,请随意提交PR。

许可证

MIT。