2012-05-24 166 views
0

因此,我希望能夠根據變量是true還是false來開啓或關閉某個函數。該函數仍然會執行,但由於該變量爲false,所以不會執行例程。如何將PHP函數的參數設置爲默認值

像這樣的事情

$testTF = "T"; 

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

Test("Go"); 

當然,這是不行的,但我不知道是否有一種方法,使其工作像預期。這個函數遍佈在腳本的任何地方,並且需要在某些地方,所以我不能將它們全部組合在一起,因爲它會破壞它們。

我知道你可以在每次調用它時將值作爲一個標誌傳遞,但是我正在尋找一種方法來使其將該值假設爲默認值,除非另有說明。也許我正在尋找全局變量,但我知道這很危險。

謝謝

+0

功能測試($測試= 'T'){ – 2012-05-24 04:16:05

+0

@Dagon:大聲笑...(?你不是認真的吧) – xbonez

+0

我不是PHP開發人員,但對邏輯比較不$測試= $ testTF應該是$ test == $ testTF – Kronass

回答

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; 
} 
+0

嘿謝謝,但問題是它不能在函數中看到testTF var。它不會崩潰,但:) :) – user1159454

+0

@ user1159454:你應該一定能夠在函數中看到$ testF。你有沒有在同一個文件中定義它,或者你的意思是你想通過各種文件訪問變量? – xbonez

+0

是的,它都是相同的文件。在PHP中,我知道你看不到在其中設置的變量,或者作爲參數傳遞。我知道在javascript中可以工作 – user1159454

0

答案你也可以用瓶蓋做:

$testTF = 'T'; 

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

$Test(); //T 
$Test(null); //T 
$Test('Go'); //Go 
相關問題