Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP Object-Oriented PHP Basics (Retired) Inheritance, Interfaces, and Exceptions Final Challenge

i have tried all the tricks i know

challenge 3 0f 7

this is what i re do and re did and get stuck , where exctally should i add the class and how

fish.php
<?php
class Fish
{
    public $common_name;
    public $flavor;
    public $record_weight;

    function __construct($name, $flavor, $record){
        $this->common_name = $name;
        $this->flavor = $flavor;
        $this->record_weight = $record;
    }

    public function getInfo() {
        $output  = "The {$this->common_name} is an awesome fish. ";
        $output .= "It is very {$this->flavor} when eaten. ";
        $output .= "Currently the world record {$this->common_name} weighed {$this->record_weight}.";
        return $output;
    }
}
  class Trout extends Fish 
     $species; {
   public function __construct($name, $flavor, $record) {
   parent::__construct($name, $flavor, $record);
   }            
   }
          ?>
<?php
class Trout extends Fish {
  function __construct($name, $flavor, $record) {
  parent::__construct($name, $flavor, $record);
  }
?>

2 Answers

first, you will not pass with two copies of the same code. Delete the second copy of the Trout class and work with the first only.

You added $species, but not inside the class. You have:

<?php
class Trout extends Fish 
     $species; {
   public function __construct($name, $flavor, $record) {
   parent::__construct($name, $flavor, $record);
   }            
   }

It should be:

<?php
class Trout extends Fish {
  public $species;
  public function __contruct($name, $flavor, $record) {
    parent::__construct($name, $flavor, $record);
  }
}
?>

This will pass the challenge. You add $species to the constructor in the next step.

thomas howard
thomas howard
17,572 Points

Why do you have 2 php lines on there?

I'm going to ignore the second one. If you want to add a property named species to Trout class of the Fish object, then you must remember to instantiate it.

In OOP, this is the class of the the object. That is the thing before an instance of it is made. So here, where is your species? It's not in the construction of the object, nor is it called in the constructor.

Look at the public objects and how they are instantiated after they are placed into the constructor. You're missing this. Pardon the pun & excuse me if I am using instantiated incorrectly.

You are exactly right, but remember this is a code challenge, so it is built in steps. I don't think Mandava has made it to that step yet.