darsyn / ip
一个不可变IP地址值对象,提供多种不同的表示方法,包括辅助函数。
5.0.0
2024-06-07 10:26 UTC
Requires
- php-64bit: >=5.6
- php-ipv6: >=5.6
- ext-ctype: *
Requires (Dev)
Suggests
- darsyn/ip-doctrine: to use IP as a Doctrine column type
This package is auto-updated.
Last update: 2024-09-11 10:29:33 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
。
简要示例
- 有三个主要类:
IPv4
、IPv6
和Multi
(用于版本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许可证的完整副本,本项目据此许可。
作者
如果你做出了贡献(提交拉取请求),别忘了在这里添加你的名字!