您可以在 PHP 中使用一个函数作为另一个函数的默认参数吗?


Can you use a function as the default argument of another function in PHP?

我可以将一个函数用作另一个函数中参数的默认值吗?在下面的示例中,我尝试使用 Wordpress 函数 get_the_title() 作为默认值:

function GetPageDepartment($department = get_the_title()) {
    return $department;
}

按原样,括号会导致解析错误。有没有办法解决这个问题,或者我必须将函数值传递给默认值之外的变量?

我知道这里的实际代码在很大程度上毫无意义,因为它只返回get_the_title(),但它只是一个例子,因为我实际对参数所做的与问题无关。

答案是"不,是的,但是...然而..."。
不可以,使用 PHP 5.6 时,您不能将函数分配为函数/方法的默认值。
是的,您可以分配一个字符串,如果您在函数上下文中使用该参数/变量,即 echo $department();,字符串将被视为函数的名称,get_the_title()将被调用。但。。。你必须依赖字符串>函数名称关系有点丑陋。还。。。谁在乎啊?


编辑:供您考虑....

<?php
function get_the_title() { return "the title"; }
function GetPageDepartment( callable $department=null ) {
    if ( null==$department ) {
        $department = 'get_the_title';
    }
    return '<'.$department().'>';
}

echo GetPageDepartment();

不,你不能使用此代码

<?php
function get_the_title(){
    return 'this is the title';
}
$temp = get_the_title();
function GetPageDepartment($department) {
    echo $department;
}
GetPageDepartment($temp);

最后,我为:

function GetPageDepartment($department = null) {
    $department = $department ?: get_the_title(); //Sets value if null.
}

如果未设置其他值,则将 $department 的值设置为 get_the_title()。