0

所以我希望能够根据变量是真还是假来打开或关闭某个功能。该函数仍会执行,但由于变量为假,它不会执行它的例程。

像这样的东西

$testTF = "T";

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

Test("Go");

当然这不会起作用,但我想知道是否有办法让它按预期工作。这个函数在脚本中随处可见,并且需要在某些地方,所以我不能将它们全部组合在一个 if 语句下,因为它会破坏它们。

我知道您可以在每次调用它时将该值作为标志传递,但我正在寻找一种方法使其假定该值作为默认值,除非另有说明。也许我在这里看的是全局变量,但有人告诉我这很危险。

谢谢

4

3 回答 3

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;
}
于 2012-05-24T04:15:51.550 回答
0

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

有你要找的答案:)

于 2012-05-24T04:19:38.210 回答
0

你也可以用闭包来做到这一点:

$testTF = 'T';

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

$Test(); //T
$Test(null); //T
$Test('Go'); //Go
于 2012-05-24T04:49:09.140 回答