2016-10-16 46 views
0

我試着在一個對象上調用多個函數。但我認爲我的語法失敗了。你能糾正我嗎?在對象上調用多個方法?

$objMetaDaten->setStrTitle('test') 
     ->setStrBeschreibung('test') 
     ->setStrUeberschrift('test') 
     ->setStrCanonical('test') 
     ->setStrRobots(MetaDaten::INDEX); 
+3

爲此,每個方法必須返回'$ this'。看** [這裏](http://stackoverflow.com/questions/3724112/php-method-chaining)**,方法鏈接。 – YvesLeBorg

+0

顯示你的錯誤信息 – scaisEdge

+1

如果'setStrTitle('test')'返回下一個類,我的意思是(setStrBeschreibung('test'))'的對象,那麼這將發生。 –

回答

3

你需要的是一種叫做流暢制定者將調用對象的setter方法作爲對傳統空隙後返回對象setter方法類似下面

Class A{ 
    private $name; 
    private $id; 

    public function setName($name) { 
     $this–>name = $name; 
     return $this; 
    } 

    public function getName() { 
    return $this–>name; 
    } 

    public function setId($id) { 
     $this–>id = $id; 
     return $this; 
    } 

    public function getId() { 
     return $this–>id; 
    } 
} 

所以,你可以然後說

$test = new A(); 

$test->setId(1)->setName('Fredrick'); 
-2

我認爲你看起來像這樣,這是一個非常基本的方法。

class Test{ 
    function test(){ 
     return 'Hi!'; 
    } 
} 

class Test2{ 
    function test_2(){ 
     return new Test(); 
    } 
} 

class Test3{ 
    function test_3(){ 
     return new Test2(); 
    } 
} 

$obj = new Test3(); 
echo $obj->test_3()->test_2()->test(); 

或者,你可以在一個類中做到這一點喜歡 -

class Test{ 
    private $num; 
    function test(){ 
     return 'Hi! your number is: '.$this->num; 
    } 

    function test_2($mul){ 
     $this->num *= $mul; 
     return $this; 
    } 

    function test_3($add){ 
     $this->num = $add; 
     return $this; 
    } 
} 

$obj = new Test(); 
echo $obj->test_3(50)->test_2(2)->test(); 
相關問題