vinogradsoft / path
路径处理
2.1.1
2023-10-11 22:52 UTC
Requires
- php: >=8.0
- ext-intl: *
Requires (Dev)
- overtrue/phplint: ^3.0
- phpunit/phpunit: ^9.5.10
This package is auto-updated.
Last update: 2024-09-15 00:49:27 UTC
README
用于处理路径和URL的库。
重生的存储库 vinogradsoft/compass。此账户所有使用此库的项目都将更新以使用
vinogradsoft/compass
。
PHP >=8.0
安装
首选安装方式是通过 composer。
运行以下命令
php composer require vinogradsoft/path "2.1.0"
或添加到 composer.json
"vinogradsoft/path": "^2.1.0"
Path
<?php use Vinograd\Path\Path; require_once dirname(__DIR__, 1) . '/vendor/autoload.php'; $path = new Path('/__NAME__/__NAME__Scanner/__NAME2__Driver'); $path->replaceAll([ '__NAME__' => 'User', '__NAME2__' => 'Filesystem', ]); $path->updateSource(); echo '<br>', $path; $path->setAll(['path','to','file.txt']); $path->updateSource(); echo '<br>', $path;
结果
/User/UserScanner/FilesystemDriver
path/to/file.txt
增加了对URL的支持。
支持在多种构建器中生成URL。方案显示了可以获取和修改的数据。
|---------------------------------------absolute url---------------------------------|
| |
|-----------------base url----------------|------------------relative url------------|
| | |
| authority | path query fragment|
| /‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\|/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\ /‾‾‾‾‾‾‾‾\ /‾‾‾‾‾‾\|
|http://grigor:password@vinograd.soft:8080/path/to/resource.json?query=value#fragment|
\__/ \___/ \_____/ \___________/ \__/ \___/
scheme user password host port suffix
<?php require_once dirname(__DIR__, 1) . '/vendor/autoload.php'; use \Vinograd\Path\Url; $url = Url::createBlank(); $url->setScheme('https') ->setUser('grigor') ->setPassword('pass@word') ->setHost('host.ru') ->setPort('8088') ->setPath('/user/index') ->setSuffix('.php') ->setArrayQuery([ 'key1' => 'value1', 'key2' => 'value2' ])->setFragment('fragment'); $url->updateSource(); printUrl($url); echo '<br><br>####################################'; $url = new Url('https://grigor:pass%40word@host.ru:8088/user/index?key1=value1&key2=value2#fragment'); $url->setSuffix('.php'); $url->updateSource(); printUrl($url); function printUrl($url) { echo '<br><b>Authority:</b> ', $url->getAuthority(); echo '<br><b>BaseUrl:</b> ', $url->getBaseUrl(); echo '<br><b>RelativeUrl:</b> ', $url->getRelativeUrl(); echo '<br><b>AbsoluteUrl:</b> ', $url; //$url->getSource(); echo '<br>'; echo '<br><b>getScheme:</b> ', $url->getScheme(); echo '<br><b>getUser:</b> ', $url->getUser(); echo '<br><b>getPassword:</b> ', $url->getPassword(); echo '<br><b>getHost:</b> ', $url->getHost(); echo '<br><b>getPort:</b> ', $url->getPort(); echo '<br><b>getPath:</b> ', $url->getPath(); echo '<br><b>getSuffix:</b> ', $url->getSuffix(); echo '<br><b>getQuery:</b> ', $url->getQuery(); echo '<br><b>getFragment:</b> ', $url->getFragment(); }
结果
Authority: grigor:pass%40word@host.ru:8088
BaseUrl: https://grigor:pass%40word@host.ru:8088
RelativeUrl: /user/index.php?key1=value1&key2=value2#fragment
AbsoluteUrl: https://grigor:pass%40word@host.ru:8088/user/index.php?key1=value1&key2=value2#fragment
getScheme: https
getUser: grigor
getPassword: pass@word
getHost: host.ru
getPort: 8088
getPath: /user/index.php
getSuffix: .php
getQuery: key1=value1&key2=value2
getFragment: fragment
####################################
Authority: grigor:pass%40word@host.ru:8088
BaseUrl: https://grigor:pass%40word@host.ru:8088
RelativeUrl: /user/index.php?key1=value1&key2=value2#fragment
AbsoluteUrl: https://grigor:pass%40word@host.ru:8088/user/index.php?key1=value1&key2=value2#fragment
getScheme: https
getUser: grigor
getPassword: pass@word
getHost: host.ru
getPort: 8088
getPath: /user/index.php
getSuffix: .php
getQuery: key1=value1&key2=value2
getFragment: fragment
默认情况下创建的URL不进行编码。可以通过实现接口 \Vinograd\Path\UrlStrategy 来编写自己的URL创建策略。默认使用 \Vinograd\Path\DefaultUrlStrategy,以便将创建的URL传递给外部系统(如模板引擎)进行编码处理或其他处理。