Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Required parameter $xxx follows optional parameter $yyy

Deprecated: Required parameter $xxx follows optional parameter $yyy in...

Since upgrading to PHP 8.0 this error is thrown when running code like this:

function test_function(int $var1 = 2, int $var2) {
    return $var1 / $var2;
}

This has worked in past versions of PHP without issue.

like image 502
miken32 Avatar asked Dec 14 '20 22:12

miken32


2 Answers

This style of function declaration has been deprecated in PHP 8.0. Writing functions like this has never made sense, since all parameters (up to the last required one) would need to be specified when the function was called. It also caused confusion with use of the ReflectionFunctionAbstract class to analyze functions and methods.

The new deprecation simply ensures that function signatures follow the common sense assumption that required parameters, which must appear, should always be declared before optional ones.

The function should be rewritten to remove the default value on the earlier parameters. Since the function could never be called without declaring all parameters, this should have no effect on its functionality.

function test_function(int $var1, int $var2) {
    return $var1 / $var2;
}
like image 200
3 revs Avatar answered Nov 01 '22 17:11

3 revs


The required parameter without a default value should come first.

function test_function(int $xxx, int $yyy = 2)
{
    return $xxx * $yyy;
}
 
like image 21
Alemoh Rapheal Baja Avatar answered Nov 01 '22 17:11

Alemoh Rapheal Baja