在PHP中的静态方法中访问全局变量

时间:2014-08-29 21:37:04

标签: php

我有一些与此类似的PHP代码:

$var1 = 'Variable 1';
$var2 = 'Variable 2';

class myClass {

    function __construct() {
        $this->var1 = $GLOBALS['var1'];
        $this->var2 = $GLOBALS['var2'];
    }

    public function returnVars() {
        return $this->var1 . ' ' . $this->var2; //Works fine
    }

    public static function returnVars2() {
        //What should I do here?
    }

}

如果我使用$myClass = new myClass()实例化此课程,我可以使用returnVars()方法,或者从课程中获取var1var2就好了。我的问题是我需要在静态方法$var1中使用全局变量$var2returnVars2()。我不能使用这个$this关键字,因为该类未实例化(并且它们在构造函数中声明),但我仍然无法正常访问全局变量。

非常感谢任何建议!

2 个答案:

答案 0 :(得分:4)

将变量声明为静态成员:

class foo {
    public static $var1;
    public static $var2;

    function __construct() {
       foo::$var1 = $GLOBALS['var1'];
       foo::$var2 = $GLOBALS['var2'];
    }
}

然后,您可以在该类中的任何方法中以foo::$varX的形式访问它们,静态与否。

答案 1 :(得分:1)

或更简单的解决方案:

$mydataExample=array(1,2,3,4,5,6,7);

function myDataFunction() {
  global $mydataExample;
  return $mydataExample;
}

然后我们可以在公共静态函数中使用此数组:

public static function example() {
 $data = myDataFunction();
 print_r($data);
}