garrcomm/networking-utilities

包含一些网络工具的PHP库

dev-master 2023-07-07 08:32 UTC

This package is auto-updated.

Last update: 2024-09-07 10:47:38 UTC


README

在处理PHP项目时,我有时需要一些网络工具。这个仓库提供了它们。

包含什么?

目前包含以下工具。当我需要时,将添加更多。

$tools = new \Garrcomm\Netutils\Service\IpTools();

// getLocalIpv4s() returns a list of all IPv4 addresses on the current machine
$ips = $tools->getLocalIpv4s();
foreach ($ips as $networkName => $ip) {
    echo 'Network ' . $networkName . ' has IP address ' . $ip->getIpAddress() . PHP_EOL;
}

// networkQuickScan returns a list of all IPv4 addresses that can be found within a network
$ip = new \Garrcomm\Netutils\Model\Ipv4Address('192.168.2.1', '255.255.255.0');
$ips = $tools->networkQuickScan($ip);
foreach ($ips as $mac => $ip) {
    echo 'System ' . $mac . ' has IP address ' . $ip->getIpAddress() . PHP_EOL;
}

// With getIpByMac you can get the IP based on a MAC address
$mac = new \Garrcomm\Netutils\Model\MacAddress('aa-bb-cc-dd-ee-ff');
$ip = $tools->getIpByMac($mac);
echo 'Mac address ' . $mac . ' resolves to ' . $ip . PHP_EOL;

// With isLocalIp you can look up if an IP address is a local IP address
$ips = ['192.168.0.1', '8.8.8.8', '10.0.0.1'];
foreach ($ips as $ip) {
    echo $ip . ' is ' . ($tools->isLocalIp($ip) ? 'a' : 'not a') . ' local IP' . PHP_EOL;
}

操作系统依赖项

这些工具应该在大多数Windows和Linux安装上工作。对于Linux,可能需要安装一些额外的软件包(根据操作系统配置,可能需要ipifconfigping和/或arp命令)。如果缺少这些命令中的任何一个,将抛出一个代码为127RuntimeException

在大多数Linux发行版中,这些工具已经内置了。否则,可以通过定位适当的软件包(使用apt-file search --regexp 'bin/ping$'yum provides ping,具体取决于您的发行版)来轻松解决。

针对Windows开发者的提示

bin文件夹中存在一些批处理文件,以简化开发过程。

如果您安装了Docker Desktop for Windows,可以使用bin\composer.batbin\phpstan.batbin\phpcs.batbin\phpunit.batbin\security-checker.bat作为Composer、PHPStan、CodeSniffer、PHPUnit和安全检查器的快捷方式,而无需在您的机器上安装PHP和其他依赖项。

Bitbucket Pipelines中使用相同的Docker容器和工具来自动测试此项目。