全局变量vs通过引用传递函数(php)


Global variable vs passing by reference in function (php)

什么更好,为什么?

1)-什么变体:全局变量与通过引用传递

/* 1 example */
$val = 1;
function add1(){
    global $val;
    $val++;
}
add1();
var_dump($val);
/* 2 example */
$val = 1;
function add2(&$val){
    $val++;
}
add2($val);
var_dump($val);

2)-什么变体:*"Return" vs通过引用传递

/* 3 example */
$val = 1;
function add3(&$val){
    $val++;
}
add3($val);
var_dump($val);
/* 4 example */
$val = 1;
function add4($val){
    $val++;
    return $val;
}
$val = add4($val);
var_dump($val);

这总是取决于你打算做什么。

但通常例子2比例子1好得多。函数不应该修改全局变量,这是一种很难控制的副作用。带引用的调用对于代码读者来说更加清晰。

第二部分也一样,例4更好,因为您可以对任何变量使用add4()函数