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

Luke Crocker
Luke Crocker
8,172 Points

Assigning properties to parameters

Challenge Task 3 of 5 "In the new constructor method, assign each of the properties on the Fish class with its corresponding parameter variable."

I am told that "Be sure the $name parameter is assigned to the common_name property."

What am I missing from my code?

fish.php
<?php

class Fish {
  public $common_name;
  public $flavor;
  public $record_weight;

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

}

?>

1 Answer

Niran Lohmaneeratana
Niran Lohmaneeratana
6,909 Points

If I am not mistaken you have the reference to the property name and the passed parameters backwards. Wouldn't it be in this example:

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

}

?>

(Changed ($this->name = $common_name;) to ($this->common_name = $name;) and ($this->record = $record_weight;) to ($this->record_weight = $record;)) The statement: "Be sure the $name parameter is assigned to the common_name property," is referring to $name as the parameter (or the variable in which the argument passed is stored) and common_name being the property (the variable which is part of class itself and the constructor is assigning to).

Luke Crocker
Luke Crocker
8,172 Points

It works now, thanks!

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

}

?>