我有一些与此类似的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()
方法,或者从课程中获取var1
和var2
就好了。我的问题是我需要在静态方法$var1
中使用全局变量$var2
和returnVars2()
。我不能使用这个$this
关键字,因为该类未实例化(并且它们在构造函数中声明),但我仍然无法正常访问全局变量。
非常感谢任何建议!
答案 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);
}