2013-11-20 72 views
1

所以,我一直在試圖谷歌這一點,我覺得像一個白癡找不到任何與谷歌的幫助,在這裏搜索Stackoverflow或php.net。如何通過PHP中的值傳遞函數輸出?

如果我有一個函數調用,比如:

myFunction($myDateTimeObj->format("Y-m-d H:i")); 

我會如何我應該只傳遞變量的引用在我的日誌文件的警告。

那麼,我該如何將輸出從一個函數傳遞到另一個函數,而不會像以下那樣做一些傻事?

$myDateTimeObjAsAString = $myDateTimeObj->format("Y-m-d H:i"); 
myFunction($myDateTimeObjAsAString); 

畢竟,如果myFunction需要說,四個參數可能我突然發現自己掙扎着拿出變量名在我看來往往會傷害代碼的可讀性一大堆更多的不是「臨時抱佛腳」 $objName->function()進入論證我打電話的功能列表。

+1

如果你的日誌只說傳遞變量作爲引用,那麼你上面做的可能是唯一的方法來做到這一點。如果之後「取消設置」這些變量,這並不壞,它只會增加代碼中的行數,但對代碼可讀性來說也會更好。 –

回答

2

如果你自己定義了myFunction(),那麼我看不到你應該通過引用傳遞的原因。如果可能的話,我會重構函數以傳遞值。在自定義函數中通過引用傳遞應該很少在PHP中使用 - 只有當它作爲實際邏輯意義。

但是,如果函數期望參數傳遞參數,則不能傳遞函數返回值,只允許變量。而已。


只是爲了理論,用優雅的語法是這樣的:

function fun(&$a, &$b) { 
    // do something 
} 

// define the vars "inline" .. 
fun($arg1 = function1(), $arg2 = $obj->foo()); 

然而,這看起來可能會更好一點,但$arg1$arg2在當前情況下(也功能後,仍然定義呼叫)。另外,我仍然認爲應該很少使用通過引用。

+0

@Barmar感謝您的編輯! :)(我無意中覆蓋了它) – hek2mgl

+0

感謝您的明確答案。 – mludd

+0

不客氣:) – hek2mgl