I recently came across the fact that Nextcloud doesn’t yet work with PHP 8 (released in 2020) and I thought it was interesting, given that PHP7.4 loses support soon. It’s a good example of why language evolution is hard: there have been a bunch of articles here about how modern PHP is much better than ’90s PHP but the cost of this kind of evolution is changes that break the existing ecosystem.
It is not really difficult to make PHP software work with all versions from 5.4 until 8.1 with the exact same code. I am doing it for some of my projects. (Minor) release of PHP may require a few small tweaks, for example PHP 8.1 broke some of my unit tests because PDO (SQLite) will no longer stringify results:
Integers and floats in results sets will now be returned using native PHP types. The previous behaviour can be restored by enabling the PDO::ATTR_STRINGIFY_FETCHES option.
It requires some planning and some careful consideration when developing and adding dependencies. If you can assume at least PHP 7 a lot of stuff becomes much easier still.
I recently came across the fact that Nextcloud doesn’t yet work with PHP 8 (released in 2020) and I thought it was interesting, given that PHP7.4 loses support soon. It’s a good example of why language evolution is hard: there have been a bunch of articles here about how modern PHP is much better than ’90s PHP but the cost of this kind of evolution is changes that break the existing ecosystem.
It is not really difficult to make PHP software work with all versions from 5.4 until 8.1 with the exact same code. I am doing it for some of my projects. (Minor) release of PHP may require a few small tweaks, for example PHP 8.1 broke some of my unit tests because PDO (SQLite) will no longer stringify results:
It requires some planning and some careful consideration when developing and adding dependencies. If you can assume at least PHP 7 a lot of stuff becomes much easier still.
I use Nextcloud in a container so have largely not had to worry about php versions for a while…
I’m excited to see what comes of owncloud’s “infinite scale” rewrite into go