Re: NULL Coercion Consistency

From: Date: Wed, 27 Apr 2022 16:30:45 +0000
Subject: Re: NULL Coercion Consistency
References: 1 2 3 4 5 6 7 8 9  Groups: php.internals 
Request: Send a blank email to internals+get-117637@lists.php.net to get a copy of this message
On Mon, 25 Apr 2022 at 23:18, Larry Garfield <larry@garfieldtech.com> wrote: > <off topic> > > Internal functions error if you pass excessive arguments to a non-variadic > function. User-space functions just ignore the extras. This is an > inconsistency that has caused me considerable grief in the past year. > > I know Joe has said he wants userspace to become more strict like internal > on this one. I will not predict what actually happens. > > </off topic> Just to note our off-list discussion, this is shown with: ``` function example($a) { var_dump(func_get_args()); } $a = example('A', 'B'); // Fine $b = strlen('A', 'B'); // Expects exactly 1 argument, 2 given ``` It's due to the old (pre-variadic) approach of using func_get_args(), func_num_args(), etc... https://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list "It is also possible to achieve variable-length arguments by using func_num_args(), func_get_arg(), and func_get_args() functions. This technique is not recommended as it was used prior to the introduction of the ... token." I'd also note that using these functions (instead of "...$var") aren't so good for IDE's or Static Analysis, as the function signature does not clearly define the parameters exist (let alone type)... so these func_* functions might be candidates for deprecation, if anyone cares enough about them :-) Craig

« previous php.internals (#117637) next »