定义一个全局变量,并包括需要它的函数?

时间:2014-03-11 22:12:59

标签: php

我有六个需要全局变量的函数。为了减少冗余,我编写了一个触发而不是触发所有六个函数的新函数。这个函数具有其他函数所需的全局$ var。

所以,它看起来像这样

function one_function_for_the_rest() {
    global $importantVar;

    functionOne();
    functionTwo();
    functionThree();

}

但被调用的函数没有看到全局变量。我这样做不正确,还是这是我不知道的限制?

3 个答案:

答案 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带入functionOnefunctionTwofunctionThree的相应范围。

答案 2 :(得分:1)

PHP没有与大多数其他语言相同的范围规则。这是不必像JavaScript或其他类似结构那样使用var声明变量的缺点。

基本上在PHP中,所使用的每个函数仅在该函数中可用。有三个例外:

  1. global关键字
  2. 对象内的$this变量。这个也是“神奇的”,因为它也可以在类中定义的匿名函数中使用。
  3. 声明匿名函数时,可以使用use将变量绑定到它。