bentools / uri-factory
PSR-7 URI工厂
2.3
2023-06-21 14:18 UTC
Requires
- php: >=8.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- guzzlehttp/psr7: ^2.5
- league/uri: ^5.3
- nyholm/psr7: ^1.6
- php-coveralls/php-coveralls: ^2.5
- phpunit/phpunit: ^9.6
- ringcentral/psr7: ^1.3
- squizlabs/php_codesniffer: @stable
- symfony/var-dumper: ^5.4 || ^6.2
Suggests
- guzzlehttp/psr7: PSR-7 HTTP message library
- league/uri: URI manipulation Library
- nyholm/psr7: PSR-7 HTTP message library
- ringcentral/psr7: PSR-7 HTTP message library
README
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。