2012-05-31 41 views
0

我有以下類,我想實現鏈接方法。我自言自語,所以我認爲測試鏈接會很好。然而,這沒有奏效。什麼會我需要做的鏈接方法什麼需要在類中改變

echo $animal->name.' says'.$animal->speak()->likes()."<br />"; 

這裏是我完整的代碼

<?php 
class Animal{ 

    var $name; 
    function __construct(){ 

     $this->name = $name; 

    } 

} 


class Dog extends Animal{ 


    public function speak(){ 

     return "Woof Woof"; 


    } 
    public function likes(){ 

     return "steaks"; 


    } 

} 

class Cat extends Animal{ 

    public function speak(){ 

     return "Meow Meow"; 

    } 

    public function likes(){ 

     return "tuna"; 

    } 

} 

$animals = array(new Dog('skippy'), new Cat('snowball')); 
foreach($animals as $animal){ 
    echo $animal->name.' says'.$animal->speak()->likes()."<br />"; 


} 
?> 

回答

2
<?php 
class Animal { 
    function speak() { 
    echo "Random Noise!\n"; 
    return $this; 
    } 
} 

class Dog extends Animal { 
    function bark() { 
    echo "bark!\n"; 
    return $this; 
    } 
} 
$a = new Dog(); 
$a->speak()->bark(); 

您需要返回$this以鏈接您的方法。

0

如果你想鏈的方法,你需要在方法返回$this的鏈接。

-2

嘗試寫的,而不是

echo $animal->name.' says'.$animal->speak()->likes()."<br />"; 

說:

printf('%s says %s %s',@animal->name,$animal->speak()->likes()); 
相關問題