cgw*_*cts 8 php pass-by-reference
我的所有函数都有多个参数,并且需要返回多个这些值,我返回的array
就像这样......
function eg($a, $b) {
$a += 5;
$b += 10;
return array('a' => $a, 'b' => $b);
}
$no = eg(0, 5);
echo $no['a']; // 5
echo $no['b']; // 10
Run Code Online (Sandbox Code Playgroud)
与通过引用相比,这被认为是不好的做法,即;
function eg(&$a, &$b) {
$a += 5;
$b += 10;
}
eg(0, 5);
echo $a; // 5
echo $b; // 10
Run Code Online (Sandbox Code Playgroud)
这真的很重要吗?在使用上述示例时,我何时想要使用其中一个?性能有什么不同吗?
谢谢
正如大多数评论所指出的那样,第一种方法(返回数组)更清晰,更容易理解,因此通过该指标,它"更好".
但是,根据您的使用情况,最好不要尝试返回多个值.考虑:
public function getDimensions() {
return array(
'width' => $this->_width,
'height' => $this->_height
);
}
$dim = $canvas->getDimensions();
echo $dim['width'], ' x ', $dim['height'];
Run Code Online (Sandbox Code Playgroud)
相比:
public function getWidth() {
return $this->_width;
}
public function getHeight() {
return $this->_height;
}
echo $canvas->getWidth(), ' x ', $canvas->getHeight();
Run Code Online (Sandbox Code Playgroud)
显然,这是一个人为的例子,但想象一下你的方法做了一些昂贵而不是轻浮的事情.现在假设您只需要第一组值,但由于您的方法为每次调用计算所有值,您必须浪费地计算所有内容并丢弃您不需要的内容.
归档时间: |
|
查看次数: |
1066 次 |
最近记录: |