2010-11-09 40 views
2

由於PHP借用了java的大部分面向對象特性。我想知道PHP和java是否都使用相同的值傳遞概念?在通過引用方面,IS與java相同嗎?

我知道Java的不reference.Its只是對象引用是按值傳遞通過。如何PHP? PHP支持是否通過引用傳遞?

+0

我相信,此行爲已更改爲PHP5的,從默認的傳遞按值默認傳遞通過引用變量。 – 2010-11-09 03:23:01

+0

「PHP借用了大部分Java的面向對象特性」 - 這是一篇荒謬的陳述(以及其餘部分所依據的謂詞)。你需要擴大你的視野Chandu – symcbean 2010-11-09 11:57:08

回答

3

在PHP中,你只能通過引用傳遞的東西,如果你聲明函數和垃圾它與&號:

function &return_by_reference() { 
    $something = make_something(); 
    return $something; 
} 

function increment(&$n) { 
    // This changes $n because it is a reference parameter 
    $n++; 
} 

有通話時傳遞的引用以及(即由基準時,傳遞變量因爲它提出了意外行爲的危險,你電話功能),但我不會去了。更好的做法是將參數聲明爲在函數簽名中通過引用傳遞。

作爲對象:在PHP 4中,對象是所有值傳遞。在PHP 5中,對象的引用是按值傳遞的,就像在Java中一樣。

+0

這是否會伴隨遞歸方法的性能提升? (由於沒有複製一堆成員變量) – 2010-11-09 03:25:12

+0

@Christian Mann:數據在需要時被複制。它被稱爲「複製寫入」原則。 「一堆成員變量」---或者你在談論對象?如果是這樣 - 在php5中,所有對象都通過引用傳遞。 – zerkms 2010-11-09 03:28:39

+0

這實際上很酷。 – 2010-11-09 03:29:22