从类中访问静态变量

时间:2014-02-14 02:57:56

标签: php class methods static

简单的问题是,是否可以从$this->调用中访问静态变量?

class testA
{
    public static $var1 = "random string";

    // current solution
    public function getVar()
    {
        return self::$var1;
    }
}

class testB
{
    private $myObject;

    public function __construct() {
        $this->myObject = new testA();

        // This line is the question
        echo $this->myObject::var1;

        // current solution
        echo $this->myObject->getVar();
    }
}

我担心我已回答了自己的问题。但是有一些静态变量我不希望每个变量都有一个函数,或者当我可以直接访问它时甚至只有一个getVar($staticVar)

如果这是唯一的解决方案。关于更好地实现这一目标的任何建议。

如果我要为每个函数调用一个函数,我不妨完全摆脱静态变量。

//method
public function staticVar1() {
    return (string) 'random string';
}

2 个答案:

答案 0 :(得分:1)

您只需访问此变量:

testA::$var1;

所以使用你的例子,它将是

class testB
{
    private $myObject;

    public function __construct() {
        $this->myObject = new testA();

        // This line is the question
        echo testA::$var1;

        // current solution
        echo $this->myObject->getVar();
    }
}

答案 1 :(得分:1)

尝试理解静态的目的。

static使得它们无需实例化即可访问。

如果静态变量在类

中,则应按如下方式访问它们
self::$var1;

下面的

是可能的

testA::$var1;

会在这里完成工作。