You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IP is an immutable value object for (both version 4 and 6) IP addresses. Several
helper methods are provided for ranges, broadcast and network addresses, subnet
masks, whether an IP is a certain type (defined by RFC's), etc.
This project aims for simplicity of use and any contribution towards that goal -
whether a bug report, modifications to the codebase, or an improvement to the
accuracy or readability of the documentation - are always welcome.
Documentation
Full documentation is available in the docs/ folder.
Compatibility
This library has extensive test coverage using PHPUnit on PHP versions: 7.1,
7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3 and 8.4.
Versions 5.x.x of this library are compatible with PHP versions 5.6 to
8.3 (and will continue to receive bug fixes).
Versions 6.x.x of this library are compatible with PHP versions 7.1 and
above, and will receive continued support for future versions of PHP (also
accepting proposed new features).
Static analysis is performed with PHPStan at max level on PHP 8.4, using
core, bleeding edge, and deprecation rules.
The Doctrine features for this library have been split off into their own
package, darsyn/ip-doctrine.
Brief Example
There are three main classes: IPv4,
IPv6, and Multi (for both
version 4 and 6 addresses).
Objects are created using a static factory method
IpInterface::factory() instead of the constructor to
speed up internal processes.
When using Multi, the default strategy for representing version 4 addresses
internally is IPv4-mapped.
<?phpdeclare(strict_types=1);
useDarsyn\IP\Exception;
useDarsyn\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)) {
thrownew \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']);
}