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

Juliette Tworsey
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Juliette Tworsey
Front End Web Development Techdegree Graduate 32,425 Points

Create a method on fish names getInfo()

Hi all! I am going through this course again as a refresher and although I got through this task the first time, I can't figure out what I'm doing wrong this time around.

What am I missing?

Thanks!

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(){
    return "A" .$name . "is an" .$flavor . "flavored fish." ."The world record weight is" .$record".";
  }

}

$bass = new Fish("Largemouth Bass", "Excellent", "22 pounds 5 ounces");
echo $bass->getinfo();

?>

2 Answers

Hanley Chan
Hanley Chan
27,771 Points

Hi,

It will pass if you change your getInfo method to:

 public function getInfo(){
    return "A" . $this->common_name . "is an" . $this->flavor . "flavored fish." ."The world record weight is" .$this->record . ".";
  }
Juliette Tworsey
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Juliette Tworsey
Front End Web Development Techdegree Graduate 32,425 Points

Thanks Hanley!

The only thing that was missing in your example above was the _weight.

This is what worked for me:

return "A" . $this->common_name . "is an" . $this->flavor . "flavored fish." ."The world record weight is" .$this->record_weight . ".";

You may also need to add spaces after the A, before is and after an, etc. But Hanley Chan is exactly right with the variables. You definitely will not pass without his suggestion.

Juliette Tworsey
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Juliette Tworsey
Front End Web Development Techdegree Graduate 32,425 Points

Thanks Ted. It turns out that the spaces weren't needed. I tried that and it didn't pass. Hmmm...In the real world there should be always be spaces in concatenation, right?

No, you misunderstand what I meant. As written, it would echo:

Abassis anexcellentflavored fish.The world record weight is5 pounds.

There are challenges that fail if the proper spacing within the echo is not preserved.

I recently learned you can place the whole thing in double, not single, quotes and do away with the concatenation in this example. PHP processes variables inside double quotes. Variables inside single quotes echo the variable name, not the value.

You do not have to add spaces with your concatenation.