在实例化期间访问类函数

时间:2014-02-23 14:43:16

标签: php class oop

我做了一些研究,发现了这个SO-PostPhp Docs ...

现在我的问题是,它不起作用!

我当前的php版本是5.4.12,我之后使用的这个功能与5.4兼容。我想知道它为什么不起作用?

这就是我所追求的以及迄今为止我尝试过的东西......

例如,我们有一个类:

class MyClass
{
    private $var = "";

    public function __construct()
    {
        // either with or without
        // return $this;
    }

    public static function newObj()
    {
        return new self;
    }

    public function setVar($var)
    {
        $this->var = $var;
    }
}

我试过这些:

$obj = (new MyClass)->setVar("foo");

// or

$obj = MyClass::newObj()->setVar("foo");

但是没有工作,当我使用$obj得到var_dump值时,它只是null

修改

我还尝试在echo内放置一个__construct来查看该类是否正在初始化,而且它是。

1 个答案:

答案 0 :(得分:2)

由于setVar未返回任何内容,因此左侧网站必须为空。

$obj = new MyClass();
$obj->setVar("foo");

会奏效。

其他方式,但很不寻常,因为setter通常不会返回任何内容:

...
public function setVar($var)
{
    $this->var = $var;
    return $this;
}
...

// now this will work:
$obj = (new MyClass)->setVar("foo");

但对我来说,这是一个模糊的代码。