Deprecate passing null to non-nullable arg of internal function #4227
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.
For user functions, parameters only accept null if they are explicitly declared nullable -- independently of strict_types. An
int
parameter will always rejectnull
. It is necessary to use?int
to accept it.The same is not the case for internal functions using zpp, which will silently accept null and cast it to the appropriate type (will become one of
false
,0
,0.0
or""
). If the internal function uses arginfo instead, then the behavior is the same as for user functions.As we would like to annotate internal functions with arginfo information in PHP 8, it is important to resolve this behavioral difference -- otherwise any future arginfo addition may also result in a behavior change wrt null handling. Edit: This particular issue has been resolved by special-casing arginfo handling for internal functions.
TODO: