implement absolute address converter

This commit is contained in:
yggverse 2024-04-06 02:04:22 +03:00
parent 3329a90819
commit 92eb9b3ba2
2 changed files with 179 additions and 45 deletions

View file

@ -70,31 +70,96 @@ var_dump(
### Address
Includes useful methods to work with network addresses
Includes methods to work with network addresses.
#### Base address methods
Different operations with address parts:
* `scheme`
* `user`
* `password`
* `host`
* `protocol`
* `path`
* `query`
* `fragment`
#### Address conversion from relative to absolute format
**Document root**
```
$base = new \Yggverse\Net\Address(
'http://yo.ygg/a1/b1/c1'
);
$address = new \Yggverse\Net\Address(
'http://yo.ygg'
'/a2'
);
var_dump(
$address->getScheme() // Scheme substring
$address->getAbsolute(
$base
) // return http://yo.ygg/a2
);
```
**Current folder**
```
$base = new \Yggverse\Net\Address(
'http://yo.ygg/a1/b1/c1'
);
...
$subject = new \Yggverse\Net\Address(
'./some/uri'
$address = new \Yggverse\Net\Address(
'c2'
);
var_dump(
$address->absolute(
$subject
) // return http://yo.ygg/some/uri
$address->getAbsolute(
$base
) // return http://yo.ygg/a1/b1/c2
);
```
**Ending slash**
```
$base = new \Yggverse\Net\Address(
'http://yo.ygg/a1/b1/c1/'
);
$address = new \Yggverse\Net\Address(
'../../b2/c2'
);
var_dump(
$address->getAbsolute(
$base
) // return http://yo.ygg/a1/b2/c2
);
```
**All options**
```
$base = new \Yggverse\Net\Address(
'http://user:password@yo.ygg/a1/b1/c1?attribute=value#anchor'
);
$address = new \Yggverse\Net\Address(
'../../a2/b2?attribute2=value2#anchor2'
);
var_dump(
$address->getAbsolute(
$base
) // return http://user:password@yo.ygg/a2/b2?attribute2=value2#anchor2
);
```
## Integrations
* [Network API with native Yggdrasil/IPv6 support](https://github.com/YGGverse/web-api)
* [Yo! Search Crawler for different networks](https://github.com/YGGverse/Yo)
* [Yo! Crawler for different networks](https://github.com/YGGverse/Yo)