包含全局变量的类属性

时间:2013-09-18 20:17:08

标签: php variables global

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

例如:

$variableGlobal = 30;

Class myClass{

    public $classProperty = global $variableGlobal;

    function myFunction(){
       $accessible = $this->classProperty;
}

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

function myfunction(){
    global $variableGlobal;
}

我认为在示例1中存在的东西就像我想要的那样但是我可能是错的,或者我是对的,但我正在以完全错误的方式接近它。任何想法都会非常感谢。

忘记提及或者我很乐意不使用全局而是将另一个类函数的结果存储在类变量中

像这样:

public $var = OtherClass::ClassFunction();

3 个答案:

答案 0 :(得分:0)

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

您也可以通过类中的$ 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();

推荐阅读

答案 1 :(得分:0)

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

public $classProperty = GLOBALS[$variableGlobal]

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

答案 2 :(得分:0)

想出来,使用解决方案从另一个问题解决我的问题:

PHP class: Global variable as property in class