the issue is that making it protected means that BC must be provided for it until the next major version. This is why Symfony only accepts increasing the visibility when being provided with a valid use case for the extension point for instance (and after figuring whether there might be a better way to provide the extension point).

And in such case, I would probably introduce a NamingStrategy object responsible for this, which could be swapped for a different implementation rather than opening the class for inheritance