0

そのため、変数が true か false かに応じて、特定の機能をオンまたはオフに切り替えられるようにしたいと考えています。関数は引き続き実行されますが、変数が false であるため、そのルーチンは実行されません。

このようなもの

$testTF = "T";

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

Test("Go");

もちろん、これは機能しませんが、意図したとおりに機能させる方法があるかどうか疑問に思っています。この関数はスクリプトのいたるところに散りばめられており、特定の場所に配置する必要があるため、1 つの 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

クロージャーでもこれを行うことができます:

$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 に答える
0

簡単な答えは、あなたがやりたいことは不可能ですが、これは次の複製でもあります: パラメータのデフォルト値として変数を持つPHP関数

あなたが探していた答えがあります:)

于 2012-05-24T04:19:38.210 に答える