darsyn / ip

Immutable value object for IPv4 and IPv6 addresses, including helper methods and Doctrine support.
http://darsyn.github.io/ip/
MIT License
245 stars 21 forks source link

[!] DBAL 4 incompatibility #88

Open DarthLegiON opened 4 months ago

DarthLegiON commented 4 months ago

Hi guys! Is this package abandoned? Because I have a problem with it when Doctrine ORM is upgraded to 3.0 and DBAL to 4.0.

Starting from this:

Fatal error: Declaration of Darsyn\IP\Doctrine\AbstractType::convertToDatabaseValue($value, Doctrine\DBAL\Platforms\AbstractPlatform $platform) must be compatible with Doctrine\DBAL\Types\Type::convertToDatabaseValue(mixed $value, Doctrine\DBAL\Platforms\AbstractPlatform $platform): mixed in /var/app/vendor/darsyn/ip/src/Doctrine/AbstractType.php on line 85

And it's real:

public function convertToDatabaseValue($value, AbstractPlatform $platform)

vs

public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): mixed

It must be fixed. I can prepare the pull request, if you need it.

zanbaldwin commented 2 months ago

Sorry, I've only just noticed this issue! There aren't going to be any new features, but I'm definitely interested in keeping this library up-to-date with newer Doctrine versions.

Currently, the IP library supports PHP versions all the way from 5.6 to 8.3 - if the newer Doctrine versions require adding return types then I'm going to have to think about backwards compatibility. Perhaps I might split it up into darsyn/ip and darsyn/ip-doctrine.

For the moment, it might be best if you copy the Doctrine type classes and make the modifications you need as I don't see the upgrades that are needed being particularly quick.

DarthLegiON commented 2 months ago

Thanks for your attention! Your answer explains a lot for me.

I see that there are no problems with updating Doctrine itself but only with DBAL extension to v4. I set v3.8.4, it's enough for ORM v3 and doesn't conflict with packages that have to maintain PHP <8.

I suggest you to add "conflict" section to your composer.json with such code:

"conflict": {
    "doctrine/dbal": ">=4.0"
}

It should prevent automatic updates of DBAL when your package is installed.

DarthLegiON commented 1 month ago

@zanbaldwin I've tested 5.0.0-rc now, looks good, passes all my tests, and not updating doctrine/dbal up to v4. Thanks!

It would be good to make doctrine bundle compatible with modern DBAL versions, it could be useful in future. It must require drop PHP < 8 support but can bring some advantages.