PHPC-2004 and PHPC-2007: Specify __toString() return type and implement Stringable #1274
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
https://jira.mongodb.org/browse/PHPC-2004
https://jira.mongodb.org/browse/PHPC-2007
See https://externals.io/message/116308#116318 for context. There is a subtle BC break here, as userland classes implementing our BSON interfaces will now need to explicitly specify a string return type on PHP versions before 8.1 (where it's added automatically). AFAICT, the only way to avoid the BC break entirely would be to continue to omit return type info and let PHP 8.1+ add the return type info and Stringable implementation automatically; however, that's not a permanent solution as PHP 8.2 will start raising warnings for the automatic behavior (php/php-src@86379b6).
For that reason, I'm inclined to explicitly add return type info and Stringable implementations (for PHP 8+) and force users to confront the BC break now. This is also unlikely to affect many users, since the BSON interfaces are not widely used (PHPC-640 is one such example).