Narrow the type for the $callback
parameter of preg_replace_callback()
#758
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.
The
$callback
parameter ofpreg_replace_callback()
should be a callable which accepts an array of strings and returns a string. Its signature can be updated to reflect this.From https://www.php.net/manual/en/function.preg-replace-callback.php:
The
$matches
parameter is of typearray<int|string, string>
because using a named capturing group results in an array element keyed by the capturing group name. Example: https://3v4l.org/bDNbdInterestingly the callback function can also return an empty value such as
null
,false
, orvoid
and PHP doesn't complain about it, but I would consider it a bug if the callback returns anything other than a string. This might warrant further discussion in case there's a common use case I've not considered.