链接方法需要在课堂上改变什么

时间:2012-05-31 15:29:07

标签: php

我有以下类,我想实现链接方法。我有点自学,所以我觉得测试链是很好的。然而,这没有用。我需要做什么

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 />"; 


}
?>

3 个答案:

答案 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());