例:
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函数的返回值,但这只是一个例子.在我的情况下,不只是一个吸气剂……
最佳答案 每个人都说的答案是“它取决于”.在您的特定示例中,“创建”函数,代码使用和维护不太明显,因此避免此模式可能是个好主意.
但是这里有个好消息,有一种方法可以做你想做的事情,这样可以保持简单和紧凑,同时不使用任何参考:
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(),否则使用引用的上一个方法并不清楚.
你不会发现使用任何一种方法的性能差异,两者都会起作用.但是你会发现编写易于遵循和处理的代码最终会有很长的路要走.