This pull request changes all instances of readonly for asymmetric visibility, namely public private(set). Though readonly reads nicely, the reasoning is that if readonly had never been added to PHP, I could achieve anything I want with asymmetric visibility; and I'm happy to have one way of doing things.
The only benefit readonly provides is that properties cannot be written to it after having been initialized (typically inside the constructor) - dubbed init-once properties. As the only place I would do that would be inside the given class anyway this feels like needlessly restricting myself.
By using XP Compiler, I can still support all PHP versions >= 7.4 even though asymmetric visibility is PHP 8.4+ feature.
/cc @mikey179
⚠️ Tests are failing because the Ubuntu PHP 8.4 build on GitHub Actions is not up-to-date.
This pull request changes all instances of
readonly
for asymmetric visibility, namelypublic private(set)
. Though readonly reads nicely, the reasoning is that if readonly had never been added to PHP, I could achieve anything I want with asymmetric visibility; and I'm happy to have one way of doing things.The only benefit readonly provides is that properties cannot be written to it after having been initialized (typically inside the constructor) - dubbed init-once properties. As the only place I would do that would be inside the given class anyway this feels like needlessly restricting myself.
By using XP Compiler, I can still support all PHP versions >= 7.4 even though asymmetric visibility is PHP 8.4+ feature.
/cc @mikey179
⚠️ Tests are failing because the Ubuntu PHP 8.4 build on GitHub Actions is not up-to-date.