nsaliu / laravel-uri
Laravel 框架的 URI 组件
Requires
- php: ^7.2
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-25 20:17:29 UTC
README
这是一个简单而实用的 Laravel 框架 URI 包。
此包提供了一个统一资源标识符(URI)的对象表示,易于访问和操作 URI 的各个部分。
安装
此包需要 PHP 7.2 和 Laravel 5.8 或更高版本。
使用 composer 安装
composer require nsaliu/laravel-uri
方法
createFromString
使用指定的 URI 创建一个新实例。
$uri = new Uri();
$uri->createFromString('https://test.test');
toString
返回 URI 实例的字符串表示形式。
$uri = new Uri();
$uri->createFromString('https://test.test');
$uri->toString();
hostIsReachable
通过 GET 请求检查主机是否返回 HTTP 状态码等于 200。
$uri = new Uri();
$uri->createFromString('https://test.test');
$uri->hostIsReachable();
equals
检查字符串表示的 URI 是否等于 URI 实例。
$uri = new Uri();
$uri->createFromString('https://test.test');
$uri->equals('https://test.test');
getComponents
如果存在,获取所有 URI 组件。
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test:443/path1/path2/page.html?key1=value1&key2=value2#fragment');
$uri->getComponents();
返回
[
'scheme' => 'https'
'host' => 'test.test'
'port' => 443
'user' => 'fakeuser'
'pass' => 'fakepass'
'path' => '/path1/path2/page.html'
'query' => 'key1=value1&key2=value2'
'fragment' => 'fragment'
]
获取器
getScheme
获取 URI 的方案部分。
$uri = new Uri();
$uri->createFromString('https://test.test');
$uri->getScheme();
如果存在方案,则返回 https
,否则返回一个 空字符串
。
getUsername
获取 URI 的用户部分。
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test');
$uri->getUsername();
如果存在用户,则返回 fakeuser
,否则返回一个 空字符串
。
getPassword
获取 URI 的密码部分。
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test');
$uri->getPassword();
如果设置了密码,则返回 fakepass
,否则返回一个 空字符串
。
getAuthority
获取 URI 的授权部分。
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test');
$uri->getAuthority();
返回
- 如果没有授权信息,此方法返回一个
空字符串
。 - 如果设置了授权,则按如下形式返回:
jhon:doe@test.com
。 - 如果端口号是方案的标准端口号,则不包括端口号,否则包括。
示例
// Create a URI with 'https' scheme and '80' as port (not default for https)
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test');
$uri->getAuthority();
返回 jhon:doe@test.com:80
getAuthorityWithPort
获取 URI 的授权部分,包括端口号,即使它是方案的标准端口号。
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test:443');
$uri->getAuthorityWithPort();
返回 jhon:doe@test.com:443
getUserInfo
获取 URI 的用户部分。
$uri = new Uri();
$uri->createFromString('https://fakeuser:fakepass@test.test:443');
$uri->getUserInfo();
返回
- 如果没有用户信息,则返回一个
空字符串
。 - 如果 URI 中存在用户,则返回
fakeuser
。 - 如果存在密码,它将返回密码,并与用户名通过 ':' 分隔
fakeuser:fakepass
。
getHost
获取 URI 的主机部分。
$uri = new Uri();
$uri->createFromString('https://test.test');
$uri->getHost();
返回 test.test
getPort
获取 URI 的端口号部分。
$uri = new Uri();
$uri->createFromString('https://test.test:443');
$uri->getPort();
返回
- 如果存在端口号,则以整数形式返回端口号:
443
。 - 如果不存在端口号,则返回
null
。
isDefaultPort
获取 URI 的端口号值是否是方案的标准端口号。
$uri = new Uri();
$uri->createFromString('https://test.test:80');
$uri->isDefaultPort();
// return false because 80 isn't the default port for https scheme
返回
- 如果端口号是方案的标准端口号,则返回
true
。 - 如果端口号不是标准端口号,则返回
false
。
getPath
获取 URI 的路径值。
$uri = new Uri();
$uri->createFromString('https://test.test/path1/path2/page.html');
$uri->getPath();
返回
- 如果存在路径,则返回
/path1/path2/page.html
。 - 如果不存在路径,则返回一个
空字符串
。
getPathAsArray
获取 URI 的路径值作为数组。
$uri = new Uri();
$uri->createFromString('https://test.test/path1/path2/page.html');
$uri->getPathAsArray();
返回
- 如果存在路径,则返回 URI 的路径部分作为数组
[
'path1',
'path2',
'page.html',
]
- 如果路径不存在,则返回一个
空字符串
。
getQuery
获取 URI 的查询部分。
$uri = new Uri();
$uri->createFromString('https://test.test/path1/path2/page.html?key1=value1&key2=value2');
$uri->getQuery();
返回
- 如果 URI 的查询部分存在,则返回
key1=value1&key2=value2
。 - 如果 URI 的查询部分不存在,则返回一个
空字符串
。
getQueryValue
获取给定查询键的值。
$uri = new Uri();
$uri->createFromString('https://test.test/path1/path2/page.html?key1=value1&key2=value2');
$uri->getQueryValue('key1');
返回
- 如果键存在于查询中,则返回:
value1
。 - 如果键不存在于查询部分中,则返回一个
空字符串
。
getQueryAsArray
获取 URI 的查询部分作为数组。
$uri = new Uri();
$uri->createFromString('https://test.test/path1/path2/page.html?key1=value1&key2=value2');
$uri->getQueryAsArray();
返回
- 如果存在查询部分,则返回
[
'key1' => 'value1',
'key2' => 'value2',
]
- 如果查询部分不存在,则返回一个
空数组
。
getPathAndQuery
获取URI的路径和查询部分。
$uri = new Uri();
$uri->createFromString('https://test.test/path1/path2/page.html?key1=value1&key2=value2');
$uri->getPathAndQuery();
返回
- 如果路径和查询部分存在,则返回
/path1/path2/page.html?key1=value1&key2=value2
。 - 如果路径存在且查询部分不存在,则返回
/path1/path2/page.html
。 - 如果路径不存在且查询部分也不存在,则返回一个
空字符串
。
getFragment
获取URI的片段部分。
$uri = new Uri();
$uri->createFromString('https://test.test/page.html?key1=value1&key2=value2#fragment-1');
$uri->getFragment();
返回
- 如果片段存在,则返回
fragment-1
。 - 如果片段不存在,则返回一个
空字符串
。
设置器
setScheme
设置URI的方案部分。
$uri = new Uri();
$uri->setScheme('http');
setUsername
设置URI的用户部分。
$uri = new Uri();
$uri->setUsername('username');
setPassword
设置URI的密码部分。
$uri = new Uri();
$uri->setPassword('password');
setUserInfo
设置URI的用户和密码部分。
$uri = new Uri();
$uri->setUserInfo('username'); // without password
$uri->setUserInfo('username', 'password'); // or with password
setHost
设置URI的主机部分。
$uri = new Uri();
$uri->setHost('test.test');
setPort
设置URI的端口号部分。
$uri = new Uri();
$uri->setPort(80);
setPath
设置URI的路径部分。
$uri = new Uri();
$uri->setPath('path1/path2/page.html');
setQuery
设置URI的查询部分。
$uri = new Uri();
$uri->setQuery('key1&value1&key2=value2');
setQueryArray
使用数组设置URI的查询部分。
$uri = new Uri();
$uri->setQueryArray(['key1' => 'value1', 'key2' => 'value2']);
addQuery
向URI添加一个查询键和值。
$uri = new Uri();
$uri->addQuery('key3', 'value3');
changeQuery
更改URI的查询部分。
$uri = new Uri();
$uri->changeQuery('key1', 'new-value');
setFragment
设置URI的片段部分。
$uri = new Uri();
$uri->setFragment('fragment-2');