我做了一些研究,发现了这个SO-Post和Php 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
来查看该类是否正在初始化,而且它是。
答案 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");
但对我来说,这是一个模糊的代码。