从其他文档访问全局变量

时间:2017-03-07 19:39:00

标签: php class oop

我从PHP开始使用OOP,我遇到了全局变量的问题。

我目前的结构示例:

test.php需要globals.php并且还包括classes.php

globals.php有以下代码:

global $something;
$something = "my text";

classes.php看起来像这样:

global $something;

class myClass {
    public $abc = "123";
    public $something;

    public function doSomething() {   
        echo $this->abc."<br>";
        echo $this->something;
    }
}

$class = new myClass();
$class_Function = $class->doSomething();

print_r($class_Function);

最后,test.php仅显示“123”。

我尝试使用“include()”代替globals.php的“require”但是没有用。在globals.php中也没有包含classes.php

1 个答案:

答案 0 :(得分:3)

$this->something从未初始化。全局$something完全超出范围,与类属性$this->something无关。如果需要访问函数或方法中的全局函数,则需要将其声明为全局:

public function doSomething() {   
        global $something;
        echo $this->abc."<br>";
        echo $something;
    }

但是你需要停止使用全局变量,因为这不是一个好的解决方案。如果您需要定义一些对您的系统来说是全局的常量值,则首选使用define()

define("SOMETHING","My text")

然后您可以在代码的任何部分访问它:

echo SOMETHING;

另见:PHP global variable scope inside a classUse external variable inside PHP class