nsaliu/laravel-uri

Laravel 框架的 URI 组件

1.0.0 2020-01-24 13:04 UTC

This package is auto-updated.

Last update: 2024-09-25 20:17:29 UTC


README

MIT Licensed CircleCI StyleCI

这是一个简单而实用的 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');