如何在PHP中按值传递函数输出?

时间:2013-11-20 22:30:57

标签: php coding-style

所以,我一直试图谷歌这个,我觉得这是一个白痴,因为没有在谷歌的帮助下找到任何东西,通过在Stackoverflow或php.net上搜索。

如果我有一个函数调用,如:

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

我会在日志文件中收到有关如何仅将变量作为引用传递的警告。

那么,我如何将输出从一个函数传递到另一个函数而不做像下面剪切的那样愚蠢的事情?

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

毕竟,如果myFunction说出来,我可能突然发现四个论点都在努力提出变量名称,在我看来,这些变量名称会比“填充”{{1}更容易损害代码可读性进入我正在调用的函数的参数列表。

1 个答案:

答案 0 :(得分:2)

如果您自己定义myFunction(),那么我没有看到您应该通过引用传递的原因。如果可能的话,我会重构函数来传递值。在自定义函数中通过引用传递应该很少在PHP中使用 - 只有它是真正的逻辑含义。

但是,如果函数需要通过引用传递的参数,则不能传递函数返回值,只允许变量。就是这样。


仅仅为了理论,更好的语法是这样的:

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

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

但是,这可能看起来好一点,但$arg1$arg2仍然在当前上下文中定义(也在函数调用之后)。我还是说很少使用通过引用传递。