innova2/url-builder
Composer 安装命令:
composer require innova2/url-builder
包简介
A lightweight PHP 7.4+ library with many features to easy build URLs
关键字:
README 文档
README
A lightweight library with many features to easy build URLs
📑 Features
This library allows :
- Create URLs most easly
- Parse and decompose your URLs
- Ride up in the URL tree
- Make comparisons between URLs
🛠️ Installation
To import the library you just need to run this command :
composer require innova2/url-builder
📝 Usage
Create from existing URL
$url = UrlBuilder::createFromUrl('http://localhost:8080/users'); // or create new url with the constructor
Handle path
Add new path segment(s)
$userId = '170b16cd-ad47-4c9c-86cf-7c83bd40d775'; $url->addPath(':id/comments')->addParam('id', $userId);
Add multiples parameters
$userId = '170b16cd-ad47-4c9c-86cf-7c83bd40d775'; $commentId = '218dd1c4-0bb0-425a-be0b-85427304e100'; $url->addPath(':userId/comments/:commentId')->addParams([ 'userId' => $userId, 'commentId' => $commentId ]);
Get the first path segment
$rowNum = 10; $url = UrlBuilder::createFromUrl('http://localhost:8080/rows/:rowNum/cells')->addParam('rowNum', $rowNum); $url->getFirstPath(); // Output: 'rows'
Get the last path segment
$url->getLastPath(); // Output: 'cells'
Handle query param
Add new query param
$page = 2; $url->addQuery('page', $page);
Add multiples query params
$page = 2; $order = 'DESC'; $url->addQueries([ 'page' => $page, 'order' => $order ]);
Work with parent
Get parent URL easly.
This function return a new instance of UrlBuilder
$url = UrlBuilder::createFromUrl('http://localhost:8080/orders/:orderId/products/:productId'); $parent = $url->getParent(); // Get 'http://localhost:8080/orders/:orderId/products'
Or up to the specific level
$url->getParent(3); // Get 'http://localhost:8080/orders'
Get relative path
Retrieve the relative path in string format
$postId = 'a937b39e-9664-404a-ac56-f3da2b83a951'; $url = UrlBuilder::createFromUrl('http://localhost:8080/posts/:id')->addParam('id', $postId); $url->getRelativePath(); // Output: '/posts/a937b39e-9664-404a-ac56-f3da2b83a951'
And with query params
Don't forget to add 'true' parameter to allow query params conversion
$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'
Get query params in string
Retrieve the query params in string format
$url = UrlBuilder::createFromUrl('http://localhost:8080/vehicles')->addQueries([ 'page' => '2', 'order' => 'ASC' ]); $url->getQueryString(); // Output: '?page=2&order=ASC'
Convert full URL to string
Retrieve the query params in string format
$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'
📝 Advanced
Compare URL to another
Compare the current URL to another URL (UrlBuilder instance)
$id = '434f65eb-4e5f-4b29-899c-b3e159fff61c'; $id2 = '3e972ca2-b422-4ac9-b793-e6f305c7bfb2'; $url = UrlBuilder::createFromUrl('http://localhost:8080/users/:id')->addParam('id', $id); $url2 = UrlBuilder::createFromUrl('http://localhost:8080/users/:id')->addParam('id', $id); $url3 = UrlBuilder::createFromUrl('http://localhost:8080/users/:id')->addParam('id', $id2); $url->compareTo($url2); // Output: true $url->compareTo($url3); // Output: false
Get word between two others
Compare the current URL to another URL (UrlBuilder instance)
$id = '434f65eb-4e5f-4b29-899c-b3e159fff61c'; $url = UrlBuilder::createFromUrl('http://localhost:8080/users/:id')->addParam('id', $id); $url->compareTo($url2); // Output: true $url->compareTo($url3); // Output: false
Split path from string (static)
Split path string by slash
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']
Trim path from string (static)
Trim path string by removing useless slashes
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
⚖️ Licence
👥 Authors
🤝 Contributors
Do not hesitate to participate in the project! Contributors list will be displayed below.
innova2/url-builder 适用场景与选型建议
innova2/url-builder 是一款 基于 HTML 开发的 Composer 扩展包,目前已累计 1.24k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2021 年 04 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「route」 「routing」 「path」 「build」 「url」 「query」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 innova2/url-builder 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 innova2/url-builder 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 innova2/url-builder 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
JSONPath implementation for querying and updating JSON objects with support for json flattening into a table
Provide a way to secure accesses to all routes of an symfony application.
Write down your routing mapping at one place
The InstantConfigurationCopy module provides easy way to copy configuration field information for admin in back office Magento 2.
A Laravel-like router for the WordPress Rewrite API
Flight routing is a simple, fast PHP router that is easy to get integrated with other routers.
统计信息
- 总下载量: 1.24k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 14
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-08