Missing parameter $b (int) in call to function App\CallToFunctionParam\sum
12 var_dump(\App\CallToFunctionParam\sum('1', 2));
13
14 // invalid: Too few arguments to function, 1 passed, 2 expected
15 var_dump(\App\CallToFunctionParam\sum(a: 1));16
17 // invalid: argument #1 ($a) cannot be passed by reference
18 var_dump(\App\CallToFunctionParam\incre(1));
Description
The function call is not valid, which will result in a fatal runtime error.
This issue will be raised for any of the following cases:
- The function is called with a different number of parameters than required.
- The function is called with parameters of types different than expected.
- Passing an expression to a parameter that requires a variable reference. Only variables can be passed by reference.
Please refer to the occurrence message for each instance to understand how it could be fixed.
Bad practice
function sum(int $a, int $b) {
return $a + $b;
}
sum(1); // invalid: the function is invoked with 1 argument, 2 were expected
function sum(int $a, int $b) {
return $a + $b;
}
sum('1', 2); // invalid: argument #1 ($a) must be of type int, string given
function sum(int $a, int $b) {
return $a + $b;
}
sum(a: 1); // invalid: the function is invoked with 1 argument, 2 were expected
function incre(int &$a) {
$a++;
}
incre(1); // invalid: a reference was expected, but an expression was passed instead
Recommended
The number and types of parameters passed in must match the number of required parameters the function expects:
function sum(int $a, int $b) {
return $a + $b;
}
sum(1, 2);
Pass in all required parameters when using the named parameter syntax:
function sum(int $a, int $b) {
return $a + $b;
}
sum(a: 1, b: 2);
If a function marks its parameters as references, only variables must be passed to it:
function incre(int &$a) {
$a++;
}
$a = 1;
incre($a);