2015-04-15 35 views
1

是否有可能在PHP中链接属性?你可以用__set在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'; 

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

回答

2

这甚至不是正确的语法。请记住,overloading不是一个正常的函数调用(因此它被称为magic)。如果你真的想这样做,使之成为真正的功能和放弃超载

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

然后你就可以做

$class->setVal('foo', 'bar')->setVal('bob', 'baz'); 
相关问题