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

时间:2014-12-02 08:41:45

标签: php wordpress function arguments default-value

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

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

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

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

3 个答案:

答案 0 :(得分:1)

答案是"不是,但是......但是......" 不,使用PHP 5.6,您无法将函数指定为函数/方法的默认值 是的,您可以指定一个字符串,如果在函数上下文中使用该参数/变量,即echo $department();,则该字符串将被视为函数的名称,并将调用get_the_title()。但是......你必须依赖string->函数名称关系,这有点难看。然而......谁在乎?


编辑:供您考虑....

<?php
function get_the_title() { return "the title"; }

function GetPageDepartment( callable $department=null ) {
    if ( null==$department ) {
        $department = 'get_the_title';
    }
    return '<'.$department().'>';
}


echo GetPageDepartment();

答案 1 :(得分:0)

不,你不能 使用此代码

<?php

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

GetPageDepartment($temp);

答案 2 :(得分:0)

最后,我充满了:

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

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