innova2 / url-builder
一个轻量级的PHP 7.4+库,具有许多功能,易于构建URL
1.0.1
2023-03-23 18:59 UTC
Requires
- php: >=7.4.0
- doctrine/collections: ^1.6
Requires (Dev)
- jaschilz/php-coverage-badger: ^2.0
- phpstan/phpstan: ^0.12.83
- phpunit/phpunit: ^9.5
README
一个轻量级的库,具有许多功能,易于构建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
⚖️ 许可
👥 作者
🤝 贡献者
不要犹豫,参与此项目!贡献者列表将显示在下。