一个不可变IP地址值对象,提供多种不同的表示方法,包括辅助函数。

5.0.0 2024-06-07 10:26 UTC

README

IP是一个不可变的值对象,用于(版本4和6)IP地址。提供了一些辅助方法,用于范围、广播和网络地址、子网掩码、IP是否为特定类型(由RFC定义)等。

本项目旨在使用简单,任何有助于实现这一目标的贡献——无论是错误报告、对代码库的修改,还是对文档准确性和可读性的改进——都受欢迎。

文档

完整文档可在 docs/ 文件夹中找到。

兼容性

此库在PHP版本5.6、7.0、7.1、7.2、7.3、7.4、8.0、8.1、8.2和8.3上使用PHPUnit进行了广泛的测试。

在PHP 8.3上使用PHPStan在max级别执行静态分析,使用核心、前沿和弃用规则。

此库的Doctrine功能已拆分到其自己的包中,darsyn/ip-doctrine

简要示例

  • 有三个主要类:IPv4IPv6Multi(用于版本4和6地址)。
  • 使用静态工厂方法 IpInterface::factory() 创建对象,而不是构造函数,以提高内部过程的速度。
  • 当使用 Multi 时,内部表示版本4地址的默认策略是 IPv4-mapped
<?php declare(strict_types=1);

use Darsyn\IP\Exception;
use Darsyn\IP\Version\IPv4;

try {
    $ip = IPv4::factory('192.168.0.1');
} catch (Exception\InvalidIpAddressException $e) {
    exit('The IP address supplied is invalid!');
}

$companyNetwork = IPv4::factory('216.58.198.174');
if (!$ip->inRange($companyNetwork, 25)) {
    throw new \Exception('Request not from a known company IP address.');
}

// Is it coming from the local network?
if (!$ip->isPrivateUse()) {
    record_visit($ip->getBinary(), $_SERVER['HTTP_USER_AGENT']);
}

行为准则

本项目包含并遵守 贡献者公约 作为行为准则。

许可

请参阅此存储库中包含的 单独的许可文件,以获取MIT许可证的完整副本,本项目据此许可。

作者

如果你做出了贡献(提交拉取请求),别忘了在这里添加你的名字!