你可以用PHP中的__set链接属性吗?

时间:2015-04-15 22:48:12

标签: php

是否可以在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';

但它没有用。是否只能通过方法调用返回对象并再次访问它?

1 个答案:

答案 0 :(得分:2)

这甚至没有正确的语法。请记住,overloading不是正常的函数调用(因此它被称为magic)。如果你真的想这样做,那就把它变成一个真正的函数并放弃重载

public function setVal($name, $value)
{
    $this->_definitions[$name] = $value;
    return $this;
}

然后你可以做

$class->setVal('foo', 'bar')->setVal('bob', 'baz');