On 25.08.2016 at 18:37, Davey Shafik wrote: > On Thu, Aug 25, 2016 at 8:12 PM, Christoph M. Becker <cmbecke...@gmx.de> > wrote: > >> Indeed, the RFC explicitly claims: >> >> | Behavior of internal functions is not going to be changed. > > This is correct for functions that had the correct behavior before > (everything but array functions). > > I can remove that part of the change — but if we're going to change it, > doing in 7.1 rather than > 7.1 would be best.
AIUI, the actual implementation of the too_few_args RFC does what it says, namely to not affect the behavior of internal function at all. The issue you've raised is that we have introduced an inconsistency, because some internal functions (e.g. array_diff) behave differently. If that is so, reverting the too_few_args RFC is out of question, because not changing the behavior of internal functions was intentional, and I assume that everybody who voted on the RFC was aware of that. The inconsistency between internal functions wrt. to too few/many arguments in strict_types mode is not related to the too_few_args RFC at all – we have this as of PHP 7. Fixing this inconsistency as soon as possible might be desirable, but it seems to me that is not even possible in the general case, as not all relevant code is under our control (think of PECL and even "private" extensions). So, even we "fix" the behavior of all bundled internal functions, we still can't claim that *all* functions throw an exception when called with too few or too many arguments in strict_types mode (besides that we easily might miss a few cases). If the docs already make this claim, the docs should be fixed. Finally, I wonder why array_diff(), for instance, even has an explicit check for ZEND_NUM_ARGS() and for Z_TYPE() != IS_ARRAY instead of properly invoking zend_parse_parameters() with "aa+" instead of "+" in the first place? Maybe I'm missing something, but otherwise I would suggest to fix that altogether instead of piecemeal, even if that has to wait until 8.0. -- Christoph M. Becker -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php