IPv6 toolkit PHP-hoz

Miután meguntam, hogy az IPv6-os címek kezelésére nincs normális toolkit a PHP-ban, elkezdtem gyártani egyet. Ezúton invitálok mindenkit, hogy tesztelje, küldjön hozzá feature requesteket. A kód maga angolul van dokumentálva és 100%-os code coverage-el büszkélkedhet.

Hozzászólások

Én sem találkoztam még hasonlóval, jó lett! És köszi, hogy megosztottad! A technikai részéhez nem tudok hozzászólni, mert nem teszteltem. A kódhoz viszont lenne egy megjegyzésem, mert szerintem egy kicsit túlbonyolítottad.

A $part1 … $part4 és $part8 helyett én egy darab $parts-ot használnék, amely egy tömb lenne. A hosszú preg_match-ek helyett pedig:

if(filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
    $parts = explode(':', $address);
}

Más részeket is lehet egyszerűsíteni, pl.:

if ((int)$matches['part1'] > 255 || (int)$matches['part2'] > 255 || (int)$matches['part3'] > 255 || (int)$matches['part4'] > 255) {
    throw new INETAddressFormatError($address);
}

helyett:

if(max($parts) > 255) {
    throw new INETAddressFormatError($address);
}

Nem kötözködés képpen írtam ezeket, hanem javaslatként, sokkal átláthatóbbá teszik a kódot.

Részben igazad van, mivel ez csak egy nagyon első változat, részben viszont szándékos. Nálam már régóta policy, hogy a PHP-ból az alapvető nyelvi elemek kivételével minél kevesebbet használjak, így a filter is blacklistre került részben mert volt benne vuln (holott pont ennél kellett volna kínosan odafigyelni), másrészt szeretem, ha a kód lekövethető. Az INET4 és INET6 osztályokból majd össze akarom vonni a közös részekez, akkor talán nem tűnik majd tùlbonyolításnak.

typo bug: src/INET6Address.php#L56

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Update: betoltam egy csomó függvényt cím típus ellenőrzésre az alapján, ami infót össze tudtam szedni. Nem vagyok 100%-ig biztos benne, hogy minden címtartomány helyesen van megadva, aki teheti, légyszi nézze át / tesztelje!