Hi!

> IMO, we should go the other way.  Deprecate excess args in userspace
> functions (making them an error in 8.0).  We've had formal variadics
> in userspace for a long time (5.5 IIRC), this is a solvable problem.

I think it's premature. We do have variadics, since 5.6
(https://github.com/php/php-src/blob/PHP-5.6/UPGRADING) but that's not
"a long time" - not for PHP code and for the speeds people upgrade.
There are still major code bases running on 5.x. There's still tons of
code out there which does variadics the old-fashioned way, and I don't
see any reason to break it - we do not gain anything from it. We should
not force people to use variadics just for variadics' sake where their
old code is already working.

My position remains - there should not be BC breaks that don't gain
people some benefit in some way. For example, there should not be BC
breaks just to promote a new feature, even if it's way better than the
old way - as long as the old way still works fine and does not cause
trouble. This seems to be such case - non-variadic calls still work, and
as far as I see, there's no improvement that allowing extra arguments
breaks or makes harder.

I think I'd rather allow extra args everywhere than ban them in user
functions. But just having a warning in zero-arg internals is fine too -
there we *can* know these weren't intended to be variadics, so we *can*
know it's probably a mistake, unlike with user functions where in the
generic case we don't know that.

-- 
Stas Malyshev
smalys...@gmail.com

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to