innova2/url-builder

一个轻量级的PHP 7.4+库,具有许多功能,易于构建URL

1.0.1 2023-03-23 18:59 UTC

This package is auto-updated.

Last update: 2024-09-23 22:17:45 UTC


README

Coverage

一个轻量级的库,具有许多功能,易于构建URL

📑 功能

此库允许

  • 最轻松地创建URL
  • 解析和解构您的URL
  • 在URL树中上升
  • 比较URL

🛠️ 安装

要导入此库,只需运行此命令

composer require innova2/url-builder

📝 用法

从现有URL创建

$url = UrlBuilder::createFromUrl('https://:8080/users');
// or create new url with the constructor

处理路径

添加新的路径段

$userId = '170b16cd-ad47-4c9c-86cf-7c83bd40d775';
$url->addPath(':id/comments')->addParam('id', $userId);

添加多个参数

$userId = '170b16cd-ad47-4c9c-86cf-7c83bd40d775';
$commentId = '218dd1c4-0bb0-425a-be0b-85427304e100';
$url->addPath(':userId/comments/:commentId')->addParams([ 
    'userId' => $userId, 
    'commentId' => $commentId
]);

获取第一个路径段

$rowNum = 10;
$url = UrlBuilder::createFromUrl('https://:8080/rows/:rowNum/cells')->addParam('rowNum', $rowNum);
$url->getFirstPath(); // Output: 'rows'

获取最后一个路径段

$url->getLastPath(); // Output: 'cells'

处理查询参数

添加新的查询参数

$page = 2;
$url->addQuery('page', $page);

添加多个查询参数

$page = 2;
$order = 'DESC';
$url->addQueries([
    'page' => $page, 
    'order' => $order
]);

与父级一起工作

轻松获取父级URL。
此函数返回一个新的UrlBuilder实例

$url = UrlBuilder::createFromUrl('https://:8080/orders/:orderId/products/:productId');
$parent = $url->getParent(); // Get 'https://:8080/orders/:orderId/products'

或直到特定级别

$url->getParent(3); // Get 'https://:8080/orders'

获取相对路径

以字符串格式检索相对路径

$postId = 'a937b39e-9664-404a-ac56-f3da2b83a951';
$url = UrlBuilder::createFromUrl('https://:8080/posts/:id')->addParam('id', $postId);
$url->getRelativePath(); // Output: '/posts/a937b39e-9664-404a-ac56-f3da2b83a951'

并带有查询参数
不要忘记添加 'true' 参数以允许查询参数转换

$url->addQuery('displaySimilar', true);
$url->getRelativePath(); // Output: '/posts/a937b39e-9664-404a-ac56-f3da2b83a951'
$url->getRelativePath(true); // Output: '/posts/a937b39e-9664-404a-ac56-f3da2b83a951?displaySimilar=true'

以字符串形式获取查询参数

以字符串格式检索查询参数

$url = UrlBuilder::createFromUrl('https://:8080/vehicles')->addQueries([
  'page' => '2',
  'order' => 'ASC'
]);
$url->getQueryString(); // Output: '?page=2&order=ASC'

将完整URL转换为字符串

以字符串格式检索查询参数

$name = 'url-builder';
$url = UrlBuilder::createFromUrl('https://github.com/InnovA2')
        ->addPath(':name/pulls')
        ->addParam('name', $name);
$url->toString(); // Output: 'https://github.com/InnovA2/url-builder/pulls'

📝 高级

比较URL

将当前URL与另一个URL(UrlBuilder实例)进行比较

$id = '434f65eb-4e5f-4b29-899c-b3e159fff61c';
$id2 = '3e972ca2-b422-4ac9-b793-e6f305c7bfb2';
$url = UrlBuilder::createFromUrl('https://:8080/users/:id')->addParam('id', $id);
$url2 = UrlBuilder::createFromUrl('https://:8080/users/:id')->addParam('id', $id);
$url3 = UrlBuilder::createFromUrl('https://:8080/users/:id')->addParam('id', $id2);
$url->compareTo($url2); // Output: true
$url->compareTo($url3); // Output: false

获取两个其他词之间的词

将当前URL与另一个URL(UrlBuilder实例)进行比较

$id = '434f65eb-4e5f-4b29-899c-b3e159fff61c';
$url = UrlBuilder::createFromUrl('https://:8080/users/:id')->addParam('id', $id);
$url->compareTo($url2); // Output: true
$url->compareTo($url3); // Output: false

从字符串中分割路径(静态)

通过斜线分割路径字符串

UrlBuilder::splitPath('/InnovA2/url-builder/pulls/'); // Output: ['InnovA2', 'url-builder', 'pulls']
// or if you have more slashes
UrlBuilder::splitPath('/InnovA2///url-builder/pulls/'); // Output: ['InnovA2', 'url-builder', 'pulls']

从字符串中修剪路径(静态)

通过删除无用的斜线修剪路径字符串

UrlBuilder->trimPath('/InnovA2/url-builder/pulls/'); // Output: 'InnovA2/url-builder/pulls'
// or if you have more slashes
UrlBuilder->trimPath('/InnovA2///url-builder/pulls/'); // Output: 'InnovA2/url-builder/pulls'

⚙️ API

static function createFromUrl(string $baseUrl): UrlBuilder
static function splitPath(string $path): array
static function trimPath(string $path): string
function compareTo(UrlBuilder $url, bool $relative = true): bool
function getScheme(): string
function getHost(): string
function getPort(): int
function getPaths(): array
function setPort(int $port): UrlBuilder
function addPath(string $path): UrlBuilder
function addParam(string $key, $value): UrlBuilder
function addParams(array $params): UrlBuilder
function getParams(): array
function addQuery(string $key, $value): UrlBuilder
function addQueries(array $queries): UrlBuilder
function getQuery(): array
function getFirstPath(): string
function getLastPath(): string
function getParent(int $n = 1): UrlBuilder
function getBetween2Words(string $a, string $b): ?string
function getRelativePath(bool $query = false): string
function getQueryString(): ?string
function toString(): string

⚖️ 许可

MIT

👥 作者

🤝 贡献者

不要犹豫,参与此项目!贡献者列表将显示在下。