在PHP中调用静态类成员

在PHP中调用静态类成员,php,class,static,static-members,Php,Class,Static,Static Members,我试图从php类中获取一个变量,而不必使用“new classname() 这是我的代码: class myVars { static $varx = null; public function __construct() { $this->varx = "test"; } } echo myVars::$varx; 我还尝试将$this->替换为self::,但没有打印任何内容。我应该如何编写类以调用myVars::$varx?这应该使静态变

我试图从php类中获取一个变量,而不必使用“new classname()

这是我的代码:

class myVars {
    static $varx = null;

    public function __construct() {
        $this->varx = "test";
    }
}

echo myVars::$varx;

我还尝试将$this->替换为self::,但没有打印任何内容。我应该如何编写类以调用myVars::$varx?

这应该使静态变量可以公开访问

class myVars {
    public static $varx = null;

    public function __construct() {
        self::$varx = "test";
    }
}

echo myVars::$varx;

但是,在您的示例中,从未调用构造函数,因此从未对静态变量进行过修改。

您遇到的问题是,您没有实例化对象,因此从未调用构造函数

你能做的是:

class myVars {
    static $varx = null;

    public function __construct() {
        $this->varx = "test";
    }
}

myVars::$varx = "test";
echo myVars::$varx;

或者您可以创建一个对象并让构造函数更改静态变量。

self::
是正确的,但是除非您实际创建一个实例,否则不会调用构造函数。接受的答案是如何工作的?我真的不明白,如果你从类外设置并获取,那么创建一个类有什么意义?正如jeroen提到的,你从不调用构造函数。如果你设置并获取相同的值,那会有什么不同?它将始终从
myVars::$varx
@Mihai Iorga返回
test
。这只是为了说明如何在不实例化对象的情况下设置它。在应用程序中,这些行和类可能分布在不同的文件/方法等上。。