2015-04-15 65 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'); 
相關問題