是否可以在PHP中将属性链接在一起?
我尝试让它像方法调用一样工作,类似于:
class DefClass
{
private $_definitions = array();
public function __set($name, $value)
{
$this->_definitions[$name] = $value;
return $this;
}
}
$test = new DefClass();
$test
->foo = 'bar'
->here = 'there'
->goodbye = 'hello';
但它没有用。是否只能通过方法调用返回对象并再次访问它?
答案 0 :(得分:2)
这甚至没有正确的语法。请记住,overloading不是正常的函数调用(因此它被称为magic)。如果你真的想这样做,那就把它变成一个真正的函数并放弃重载
public function setVal($name, $value)
{
$this->_definitions[$name] = $value;
return $this;
}
然后你可以做
$class->setVal('foo', 'bar')->setVal('bob', 'baz');