Skip to content

Dropping support for EOL PHP versions #754

@HoldYourWaffle

Description

@HoldYourWaffle

Lodata v5 still supports EOL PHP versions 7.3, 7.4 and (very soon) 8.0.
Dropping support for these outdated versions would give access to modern language features that make using, maintaining and improving Lodata a lot easier.

Dropping PHP 7.3 (EOL 2 years ago) would give access to...

  1. Typed properties
  2. Arrow functions
  3. Null coalescing assignment operator

Dropping PHP 7.4 (EOL 1 year ago) would give access to...

  1. Named arguments
  2. Attributes
  3. Constructor property promotion
  4. Union types
  5. match expression
  6. Nullsafe operator
  7. mixed type

Dropping PHP 8.0 (EOL in 3 days) would give access to...

  1. Enumerations
  2. First class callables
  3. readonly properties

Anecdotally...

  1. Earlier PHP versions seem to be extra problematic in the context of Tests broken on Windows #747.

This requires a major version bump of course, which is the perfect opportunity for batching some more rigorous refactors that might involve breaking changes.
In particular I'd like to simplify and reduce coupling in the operations system (#751), and I've seen similar opportunities for improvement in other systems.

Dropping these PHP versions would also drop Laravel 8, which has been EOL for almost a year.
I think it's worth seriously considering dropping support for Laravel 9 as well, considering it'll also be EOL in 3 months. I don't know enough about the codebase (or Laravel) to know if this would bring any immediate benefits, but given that it'll be EOL in 3 months I think it'd be silly if we have to support it for another major version cycle.

I'd love to hear your thoughts on this!
Suffice to say I would love to help with the effort, I'll be using Lodata in production for the foreseeable future, so I'd love to help maintain it :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions