2014-02-11 51 views
2

如何在PHP中設置一個默認變量爲函數?在蟒蛇,它應該是這樣的:PHP定義了一個變量,如果它沒有傳遞給函數

def fun(con = predefined): 

我已經嘗試了以下無濟於事:

function fun($con = $GLOBALS['con']){} 

在這種情況下,你可以看到,我想將值設置爲全局變量的定義。

+0

check [this](http://stackoverflow.com/questions/5859376/php-function-with-variable-as -default-value-for-an-parameter) –

+0

@DrixsonOseña該死的,顯然我的關鍵字已關閉。我考慮將它設置在函數的開頭,但是來自python;對我來說看起來太亂了LOL。我將把這個問題留給任何進行特定搜索的人。 – Jamus

+0

更具體地說,如果$ con的值可以作爲選項傳遞給該函數,那麼我更願意;看起來我必須做一個解決方法。 – Jamus

回答

1

看起來你的問題是你正在嘗試o從全局設置默認值。 PHP可能不喜歡這樣。你可以這樣規避它:

function fun($con = null){ 
    $con or $con = $GLOBALS['con']; 
} 

我個人認爲這是一種嗜好。看起來你想從全局資源獲取數據庫連接。我不認爲這是應該如何完成的,但是如果不傳遞給函數,這個答案將允許從全局設置$ con。或者如果通過則允許使用它。

+0

此解決方案完美運行,儘管您有我擔心。有沒有其他方法可以做到這一點?我的變量名稱放棄了,是吧?我寧願不必每次重新定義它,所以我正在尋找一種無限定義的方式;全局命名空間看起來像我唯一的解決方案 – Jamus

+0

你對課程熟悉嗎?你可以創建一個維護連接的db類,並且你的類方法可以使用類似$ this-> con –

+0

的方式訪問連接。這是一個好主意。我正在逐漸從python移植過來,所以我理解了類可能如何在PHP中工作。看起來像一個研究領域,謝謝你的提示! – Jamus

2

這是一個很簡單的例子:

<?php 
function makecoffee($type = "cappuccino") 
{ 
    return "Making a cup of $type.\n"; 
} 
echo makecoffee(); 
echo makecoffee(null); 
echo makecoffee("espresso"); 
?> 

上面的例子將輸出:

Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.

+0

感謝您的出色解釋,它是可發佈的!但遺憾的是,這與我的問題並不完全一致。 – Jamus

+0

這是一個小例子,您可以如何實現此功能。基於此,您可以開發您的邏輯 –

1

我們建立了一個小的類使用全局變量以靜態方式

class globy{ 
    static public function set($name, $value) { $GLOBALS[$name] = $value; } 
    static public function get($name)   { return $GLOBALS[$name]; } 
} 

,那麼你可以做到這一點

function fun($con=globy::get('con')){} 

,或者你可以做到這一點(不是你的問題)

function fun($con=globy::set('con','value_of_con')){} 
+0

這遠遠超出了我對PHP LOL的理解,但它和其他解決方案一樣好用;非常感謝。 – Jamus

+0

它現在更容易理解嗎? –

相關問題