Skip to content

v3.0.0

Latest
Compare
Choose a tag to compare
@rlanvin rlanvin released this 02 Mar 09:05

Backward Compatibility Breaking Changes

  • Dropped support for PHP 7.0
  • Deprecated auto-detection of binary strings for IPv6 #57
    This means you can't directly pass the result of inet_pton to construct an IPv6 instance anymore, because it is
    impossible to reliability distinguish some IPv6 human-readable representation from their binary string representation.
    Instead, you need to use the explicit factory method IPv6::createFromBinaryString if you want to work with inet_pton.
    Note: this is still supported for IPv4.
  • IPBlock::getMask() renamed to IPBlock::getNetmask()
  • IPBlock::getPrefix() renamed to IPBlock::getPrefixLength()
  • IPBlock::getMaxPrefix() renamed to IPBlock::getMaxPrefixLength()
  • IPBlock::getGivenIpWithPrefixLen() renamed to IPBlock::getGivenIpWithPrefixLength()
  • Separate "private" from other "reserved" IP addresses.
    This changes the behaviour of IP::isPrivate() and IPBlock::getPrivateBlocks() to be more narrow in scope.
    The previous behaviour has been moved to new methods: IP::isReserved() and IPBlock::getReservedBlocks().
  • IP::isPrivate() renamed to IP::isReserved()
  • IPBlock::getPrivateBlocks() renamed to IPBlock::getReservedBlocks()
  • IP::isPrivate() now only tests if an IP is in a forwardable and non globally reachable IP Block as defined in the IANA special-purpose address registry
  • IPBlock::getPrivateBlocks() now returns only the forwardable and non globally reachable IP Blocks as defined in the IANA special-purpose address registry

Added

  • Support for PHP 8.1
  • Support for PHP 8.0
  • Added explicit factory methods for IPv4/IPv6 classes:
    createFromInt, createFromFloat, createFromString, createFromBinaryString, createFromNumericString and createFromGmp
  • IPBlock::plus() and IpBlock::minus() now accept numeric strings and GMP instances
  • IPBlockIterator now implements ArrayAccess which means you can write e.g. IPBlock::create('192.168.0.0/24')->getSubBlocks('/25')[1]
  • New methods for IPv4Block/IPv6Block: getPrivateBlocks(), getLoopbackBlock(), getLinkLocalBlock()

Changed

  • Optimise performance of IP::isPrivate()

Fixed

  • IPBlock::contains now always throws an InvalidArgumentException if mixing IP versions

Removed

  • Removed deprecated method IPBlock::getSuper