我有以下类,我想实现链接方法。我有点自学,所以我觉得测试链是很好的。然而,这没有用。我需要做什么
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 />";
}
?>
答案 0 :(得分: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
才能链接您的方法。
答案 1 :(得分:0)
如果你想链式方法,你需要在链接方法中返回$this
。
答案 2 :(得分:-2)
尝试编写而不是
echo $animal->name.' says'.$animal->speak()->likes()."<br />";
那:
printf('%s says %s %s',@animal->name,$animal->speak()->likes());