我有六个需要全局变量的函数。为了减少冗余,我编写了一个触发而不是触发所有六个函数的新函数。这个函数具有其他函数所需的全局$ var。
所以,它看起来像这样
function one_function_for_the_rest() {
global $importantVar;
functionOne();
functionTwo();
functionThree();
}
但被调用的函数没有看到全局变量。我这样做不正确,还是这是我不知道的限制?
答案 0 :(得分:1)
由于在调用on_function_for...
时定义了变量,因此您无法正确执行此操作。一种更简单的方法就是在代码的开头加$importantVar;
。
或者将函数包装在类中并将变量放在类中。
e:所以基本上做:function myFunc($important) { stuff }
并在调用函数时执行myFunc($importantVar)
示例:
$asd = "lol";
class myclass {
public function lol($asd) {
echo $asd;
}
}
$obj = new myclass;
$obj->lol($asd);
答案 1 :(得分:1)
你没有正确地做到这一点。 每个函数都需要使用global
范围标识符,例如global $importantVar;
,或者将$importantVar
作为参数传递。否则,其他函数在各自的范围内没有$importantVar
。
简单地从one_function_for_the_rest
中调用函数并不能告诉其他函数有关one_function_for_the_rest
中使用的全局变量或变量的任何信息。在技术方面,您的函数调用不会将$importantVar
带入functionOne
,functionTwo
或functionThree
的相应范围。
答案 2 :(得分:1)
PHP没有与大多数其他语言相同的范围规则。这是不必像JavaScript或其他类似结构那样使用var
声明变量的缺点。
基本上在PHP中,所使用的每个函数仅在该函数中可用。有三个例外:
global
关键字$this
变量。这个也是“神奇的”,因为它也可以在类中定义的匿名函数中使用。use
将变量绑定到它。