Jump to content

Archived

This topic is now archived and is closed to further replies.

ScrollMaster

Fatal error: Call to a member function

Recommended Posts

help for I am a exterme php newb and I need some freaky php freak to come and pwn me with the anwser to my problem.

Here is my code:

[code]
<?php
#================================================================
  class FlyBehaviour
  {

    public function Fly()
    {
      print "<p>"."Duck is Flying!, Almost!"."</p>"."\n";
    }
  }
#================================================================
  class QuackBehaviour
  {
    public function Quack()
    {
      print "<p>"."Duck is Quacking!, Almost!"."</p>"."\n";
    }
  }
#================================================================
  class Duck
  {
     # Variables ------------------------------------------------
     public $fly;
     public $quack;
     # Functions ------------------------------------------------
     public function __construct()
     {

         print "<p>"."Created a Duck!"."</p>"."\n";
     }
     public function performFly()
     {
       $fly->Fly();
     }
     public function performQuack()
     {
       $quack->Quack();
     }

  }
#================================================================
  $duck = new Duck();
  $duck->performFly();
  $duck->performQuack();
?>
[/code]

Output:

Created a Duck!

Fatal error: Call to a member function Fly() on a non-object in E:\Program\www\localhost\simUduck\index.php on line 33


and Above is my error...

What have I done wrong? What rule have I missed? What Syntax have I wrong?
Please Help!

Share this post


Link to post
Share on other sites
in the class Duck, you have to make $fly an instance of FlyBehavior before it knows how to use Fly().

[code]public function __construct()
     {
         $this->fly = new FlyBehavior;
         print "<p>"."Created a Duck!"."</p>"."\n";
     }[/code]

Also, I believe you have to change $fly->Fly() with $this->fly->Fly().

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.