我通常将程序编程与PHP结合使用,并在此处查看其他问题,询问如何避免全局变量,答案通常是使用OOP。通过程序编程是否不可能避免全局变量?
例如,我可以用两种方式编写以下函数。两者都有优点和缺点。如果我经常调用此函数,则第二种方法看起来很肿,因为它每次必须传递所有变量。另一种选择是第一种方法,其中函数仅传递值并且变量都是函数中的全局变量。
doWhatIneedtodo(2);
function doWhatIneedtodo($val) {
global $this; global $that; global $theother;
if ($val == 1) {
$this++;
} else
if ($val == 2) {
$that++;
} else
if ($val == 3) {
$theother++;
}
}
doWhatIneedtodo(2,$this,$that,$theother);
function doWhatIneedtodo($val,&$this,&$that,&$theother) {
if ($val == 1) {
$this++;
} else
if ($val == 2) {
$that++;
} else
if ($val == 3) {
$theother++;
}
}
或者也许有一种我没有的更好的方法?
答案 0 :(得分:2)
从麻烦的代码到不太麻烦的代码,这是一个很大的进步:
因此,您看到,用全局过程代码一一解决问题最终还是会导致OOP,至少在PHP中是如此。在途中还可以进行纯函数式编程,但是在PHP方面,纯函数式语言的装备不足。
答案 1 :(得分:0)
对于OOP,您通常会找到有关此问题的答案的原因有两个:
除此之外,我更喜欢第二种实现,因为将其转换为正确的OOP代码要容易得多。如果使用第一个实现,并且想要更改变量的名称,则必须调整调用代码和函数本身。