使用引用创建变量是个好主意吗?

时间:2012-06-30 00:20:15

标签: php variables reference

示例:

function create_pets(&$cats, &$dogs){
 $dogs = get_dogs();
 $cats = get_cats();
}

所以我会这样称呼:

function foo(){
  create_pets($cats, $dogs);

  // here use $cats and $dogs variables normally
}

我知道我可以为新的varible分配其中一个getter函数的返回值,但这只是一个例子。在我的情况下,不只是一个吸气剂......

2 个答案:

答案 0 :(得分:1)

这取决于具体情况。大多数情况下,您通常会按值调用变量,但在某些情况下,如果要修改变量内容而不更改代码其他部分中的变量值,则通过引用调用是个好主意。另外明智的是,如果您只想要实际内容而只需要实际内容,则按值调用是一个更好的主意。这个链接很好地解释了它。 http://www.exforsys.com/tutorials/c-language/call-by-value-and-call-by-reference.html

答案 1 :(得分:1)

每个人都说的答案是“它取决于”。在您的特定示例中,“创建”函数,代码使用和维护不太明显,因此避免此模式可能是个好主意。

但这是个好消息,有一种方法可以做你想做的事情,在不使用任何参考的情况下保持简单和紧凑:

function create_pets(){
    return array(get_dogs(), get_cats());
}


function foo(){
    list($dogs, $cats) = create_pets();
    //here use $cats and $dogs variables normally
}

如您所见,您只需返回一个数组并使用the list language construct将单个变量放在一行中。这也更容易分辨出这里发生了什么,create_pets()显然正在回归新的$ cats和$ dogs;除非直接检查create_pets(),否则使用引用的上一个方法并不清楚。

你不会发现使用任何一种方法的性能差异,两者都会起作用。但是你会发现编写易于遵循和处理的代码最终会有很长的路要走。