garrcomm / networking-utilities
包含一些网络工具的PHP库
dev-master
2023-07-07 08:32 UTC
Requires
- php: >=7.3
- ext-json: *
- ext-sockets: *
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.4
- squizlabs/php_codesniffer: ^3.5
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,可能需要安装一些额外的软件包(根据操作系统配置,可能需要ip
、ifconfig
、ping
和/或arp
命令)。如果缺少这些命令中的任何一个,将抛出一个代码为127
的RuntimeException
。
在大多数Linux发行版中,这些工具已经内置了。否则,可以通过定位适当的软件包(使用apt-file search --regexp 'bin/ping$'
或yum provides ping
,具体取决于您的发行版)来轻松解决。
针对Windows开发者的提示
在bin
文件夹中存在一些批处理文件,以简化开发过程。
如果您安装了Docker Desktop for Windows,可以使用bin\composer.bat、bin\phpstan.bat、bin\phpcs.bat、bin\phpunit.bat和bin\security-checker.bat作为Composer、PHPStan、CodeSniffer、PHPUnit和安全检查器的快捷方式,而无需在您的机器上安装PHP和其他依赖项。
在Bitbucket Pipelines中使用相同的Docker容器和工具来自动测试此项目。