包含全局变量的类属性


Class Property Containing a Global Variable

我想知道是否有办法将全局变量存储在类属性中,以便类内的方法可以轻松使用它。

例如:

$variableGlobal = 30;
Class myClass{
    public $classProperty = global $variableGlobal;
    function myFunction(){
       $accessible = $this->classProperty;
}

现在我知道我可以通过简单地在类函数中调用全局变量来获取全局变量,如下所示:

function myfunction(){
    global $variableGlobal;
}

我认为类似于我在示例 1 中想要的东西存在,但我可能完全错了,或者我是对的,但我以完全错误的方式接近它。任何想法都会很棒,谢谢。

忘了提,否则我很乐意不使用全局函数,而是将另一个类函数的结果存储在类变量中

这样:

public $var = OtherClass::ClassFunction();

您想要的值应该在 GLOBALS 变量中的任何位置可用,使用变量名称作为键。

public $classProperty = GLOBALS[$variableGlobal]

但是,我建议,为了避免不必要的耦合并允许测试,您可能希望将全局中的值传递给类。

可以使用构造方法并通过引用传递。在实例化类时将值注入构造函数,并且通过使用引用运算符 & ,您可以随时访问全局变量并获取当前值。

您也可以通过类中的$GLOBAL结构访问全局。请参阅此处的示例:

<?php
$variableGlobal = 30;
class myClass{
    public $classProperty;
    public function __construct(&$globalVar){
        $this->classProperty = &$globalVar;
    }
    public function myFunction(){
       $accessible = $this->classProperty;
        // do something interesting
        print "$accessible'n";
    }
    public function accessGlobal(){
        print $GLOBALS["variableGlobal"] . "'n";
    }
}

$thisClass = new myClass($variableGlobal);
$thisClass->myFunction();
$GLOBALS["variableGlobal"] = 44;
$thisClass->myFunction();
$variableGlobal = 23;
$thisClass->accessGlobal();

推荐阅读

  • 参考资料解释
  • GlOBALS解释

通了,使用解决方案解决了我的另一个问题:

PHP 类:全局变量作为类中的属性