为什么我不能在PHP函数中将函数作为默认变量提供?

Wal*_*row 3 php function

我有一个函数返回一个自定义的星期几,用于计算自定义周期.

我遇到问题的是实例化函数时的默认变量值.我使用不同的方法 function来返回默认值,这会引发错误.

当我用类似的东西调用一个简单的函数时:

function myFunction ($myVar = "test") { ... }
Run Code Online (Sandbox Code Playgroud)

那就没问题了.

一旦我将function变量作为默认值抛出,我就会收到以下错误:

[Tue Nov 03 15:00:41 2015] [error] [client 10.64.241.13] PHP Parse error:  syntax error, unexpected '(', expecting ')' in /var/www/service/test.php on line 6
Run Code Online (Sandbox Code Playgroud)

这是我的函数,如果你想要一个例子,抛出这个错误:

function get_mod_week_day($day = date('N'), $hour = date('H') ) {

$myDay = null;

switch ($day) {

    case 1:
        $myDay = 5;
        break;
    case 2:
        $myDay = 6;
        break;
    case 3:
        $myDay = 7;
        break;
    case 4:
        $myDay = 1;
        break;
    case 5:
        $myDay = 2;
        break;
    case 6:
        $myDay = 3;
        break;
    case 7:
        $myDay = 4;
        break;
    default:
        $myDay = false;
}

return $myDay;

}
Run Code Online (Sandbox Code Playgroud)

是否无法调用a function来返回默认变量或者是否有某种方法来解决这个问题?

Abr*_*ver 6

从文档功能参数:

默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用.

通常会做类似于此的事情:

function get_mod_week_day($day=null, $hour=null) {
    $day  = is_null($day)  ? date('N') : $day;
    $hour = is_null($hour) ? date('H') : $hour;
}  
Run Code Online (Sandbox Code Playgroud)

此外,您switch似乎冗长看到你是刚刚加入4或减去3$day.