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) Properties and Methods Mid-Course Challenge

Harry Gils
Harry Gils
4,322 Points

What am I missing in this code challenge?

I think I'm creating the getInfo() function correctly but it keeps saying it's wrong. Can someone show / explain what I'm missing here and why?

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;
     } 

  function getInfo(){
     return "A ". $this->$name . " is an ". $this->$flavor . "flavored fish.  The world record weight is " . $this->$record . ".";

  }

}
$bass = new Fish("Largemouth Bass", "Excellent", "22 pounds 5 ounces");
?>

trying the exact same code, the challenge passed for me. It seems your browser just needs a good refresh.

 <?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;
     } 

  function getInfo(){
     return "A ".$this->$name . " is an ".$this->$flavor . "flavored fish.  The world record weight is " .$this->$record . ".";

  }

}
$bass = new Fish("Largemouth Bass", "Excellent", "22 pounds 5 ounces");
?> 

2 Answers

Jason Anders
MOD
Jason Anders
Treehouse Moderator 145,858 Points

Hi Harry,

You are very close. You are just using the wrong variable names. $this is right, but you don't need the $ for the name, and you need to use the original variable names, not the ones pass in the argument.

function getInfo(){
  return "A ".$this->common_name . " is an ".$this->flavor . "flavored fish.  The world record weight is " .$this->record_weight . ".";
}

Hope that helps. Keep Coding! :)

Harry Gils
Harry Gils
4,322 Points

Thanks guys. I redid it the way you explained it Jason and it worked. Yes, I just noticed that I don't need a $ in front of the name since $this->common_name is the variable.. already a $ there.

thanks. It's making a bit of sense now.