简体   繁体   English

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

[英]Global variable vs passing by reference in function (php)

What is better and why? 有什么更好的,为什么?

1)- What variant: Global variable vs passing by reference 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)- What variant: *"Return" vs passing by reference 2)-什么变体:*“返回”与通过引用传递

/* 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);

It always depends what you intend to do. 它总是取决于您打算做什么。

But commonly Example 2 is much better than 1. Functions should not modify global variables, it's called a side effect which is very hard to control. 但是通常示例2比1更好。函数不应修改全局变量,这被称为副作用,很难控制。 The call with reference ich much more clear to the code readers. 参考代码的调用对代码阅读器来说更加清晰。

Also same for the second part, Example 4 is better, since you can use the add4() function with any variable. 第二部分也一样,示例4更好,因为您可以将add4()函数与任何变量一起使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM