如何将PHP函数的参数设置为变量作为默认值

时间:2012-05-24 04:13:38

标签: php function variables

所以我希望能够根据变量是真还是假来打开或关闭某个函数。该函数仍然会执行,但由于该变量为false,因此它不会执行常规操作。

像这样的东西

$testTF = "T";

function Test($test=$testTF){
echo $test;
}

Test("Go");

当然这不起作用,但我想知道是否有办法让它像预期的那样工作。这个函数散布在脚本的任何地方,并且需要在某些地方,所以我不能只在一个if语句下将它们组合在一起,因为它会破坏它们。

我知道你每次调用它时都可以将值作为标志传递,但我正在寻找一种方法,使它将该值假设为默认值,除非另有说明。也许我在这里看全球化,但这很危险我被告知。

由于

3 个答案:

答案 0 :(得分:2)

你能这样做吗?

$testTF = "T";

function Test($test=NULL){
    if ($test ===NULL) {
        global $testTF;
        $test = $testTF;
    }
    echo $test;
}

Test("Go");

可选地,如果您反对使用全局变量,则可以将默认值封装在函数中,如下所示:

function Test($test=NULL){
    if ($test ===NULL) {        
        $test = getDefault();
    }
    echo $test;
}

Test("Go");

function getDefault(){
    //pull default value from wherever
    $testDefault = 'T';
    return $testDefault;
}

答案 1 :(得分:0)

简短回答是您想要的方式是不可能的,但这也是一个副本: PHP function with variable as default value for a parameter

您正在寻找答案:)

答案 2 :(得分:0)

您也可以使用闭包执行此操作:

$testTF = 'T';

$Test = function ($test = null) use ($testTF){
    if ($test === null) $test = $testTF;
    echo $test;
};

$Test(); //T
$Test(null); //T
$Test('Go'); //Go