Network tools Library for PHP with native Yggdrasil / IPv6 support
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

233 lines
3.4 KiB

# net-php
6 months ago
Network Library for PHP with native Yggdrasil support
6 months ago
## Install
`composer require yggverse/net`
6 months ago
## Usage
6 months ago
### Socket
#### Check socket is open
2 months ago
``` php
6 months ago
var_dump(
\Yggverse\Net\Socket::isOpen('yo.index', 80)
);
```
#### Check host valid
2 months ago
``` php
6 months ago
var_dump(
6 months ago
\Yggverse\Net\Socket::isHost('yo.index')
6 months ago
);
```
#### Check port valid
2 months ago
``` php
6 months ago
var_dump(
6 months ago
\Yggverse\Net\Socket::isPort(80)
6 months ago
);
```
### Dig
#### Resolve records
6 months ago
2 months ago
``` php
6 months ago
var_dump(
\Yggverse\Net\Dig::records('yo.index', ['A', 'AAAA'], &$result = [], &$error = [], $provider = null, $timeout = 5)
6 months ago
);
```
6 months ago
#### Check hostname valid
6 months ago
2 months ago
``` php
6 months ago
var_dump(
\Yggverse\Net\Dig::isHostName('yo.index')
6 months ago
);
6 months ago
```
6 months ago
6 months ago
#### Check record valid
6 months ago
2 months ago
``` php
6 months ago
var_dump(
\Yggverse\Net\Dig::isRecord('A')
6 months ago
);
6 months ago
```
6 months ago
6 months ago
#### Check record value valid
6 months ago
2 months ago
``` php
6 months ago
var_dump(
\Yggverse\Net\Dig::isRecordValue('A', '127.0.0.1')
6 months ago
);
6 months ago
```
### Resolve
2 months ago
#### Init resolver
2 months ago
``` php
$resolve = new \Yggverse\Net\Resolve(
[
'A',
'AAAA'
],
[
'1.1.1.1',
'8.8.8.8'
],
// ..
);
2 months ago
```
2 months ago
#### Get resolved URL string
2 months ago
``` php
2 months ago
$resolved = $resolve->url(
'https://en.wikipedia.org/wiki/Domain_Name_System'
2 months ago
// next arguments contain debug variables and new address object
);
if ($resolved)
{
var_dump(
$resolved // https://185.15.59.224/wiki/Domain_Name_System
);
}
```
#### Resolve Address object
2 months ago
``` php
2 months ago
$resolved = $resolve->address(
new \Yggverse\Net\Address(
'https://en.wikipedia.org/wiki/Domain_Name_System'
)
);
if ($resolved)
{
var_dump(
$resolved->get() // https://185.15.59.224/wiki/Domain_Name_System
);
var_dump(
$resolved->getHost() // 185.15.59.224
);
}
```
### Address
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**
2 months ago
``` php
$base = new \Yggverse\Net\Address(
'http://yo.ygg/a1/b1/c1'
);
$address = new \Yggverse\Net\Address(
'/a2'
);
var_dump(
$address->getAbsolute(
$base
) // return http://yo.ygg/a2
);
```
**Current folder**
2 months ago
``` php
$base = new \Yggverse\Net\Address(
'http://yo.ygg/a1/b1/c1'
);
$address = new \Yggverse\Net\Address(
'c2'
);
var_dump(
$address->getAbsolute(
$base
) // return http://yo.ygg/a1/b1/c2
);
```
**Ending slash**
2 months ago
``` php
$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**
2 months ago
``` php
$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
);
```
2 months ago
### Valid
Network entities validation
**Supported methods**
* `Valid::ip`
* `Valid::ip4`
* `Valid::ip6`
* `Valid::domainHostName`
6 months ago
## Integrations
6 months ago
* [Network API with native Yggdrasil/IPv6 support](https://github.com/YGGverse/web-api)
* [Yo! Crawler for different networks](https://github.com/YGGverse/Yo)
2 months ago
* [Yoda - PHP-GTK browser for Gemini Protocol](https://github.com/YGGverse/Yoda)