doesn't have real use cases (in any case, foo($a = null) is better)

allows execution of functions with unexpected input data (nobody checks isset() for all arguments)

Historically, PHP allows calling functions with fewer actual parameters than required by the function definition. These “non-passed” arguments lead to warning emission and continuation of function execution with uninitialized arguments.

I propose to disable calling “user” functions with insufficient actual parameters. PHP will throw an “Error” exception instead.

function foo ( $a ) { var_dump ( $a ) ; // not executed var_dump ( $a ) ; // not executed } foo ( ) ; // throw Error("Too few arguments to function foo(), 0 passed in %s on line %d and exactly 1 expected")

Using this approach, all attempts to call functions with unexpected input data are going to be caught as soon as possible.

Behavior of internal functions is not going to be changed.