Challenge 1 — Solution Task: Create a Book class with public properties $title, $author, and a constructor that sets both. Add a method describe() that echoes "[title] by [author]". Create two different Book objects and call describe() on each. title = $title; $this->author = $author; } public function describe() { echo $this->title . " by " . $this->author . "
"; } } $book1 = new Book("The Pragmatic Programmer", "David Thomas"); $book2 = new Book("Clean Code", "Robert C. Martin"); $book1->describe(); $book2->describe(); ?> Output: The Pragmatic Programmer by David Thomas Clean Code by Robert C. Martin Notes: - The constructor runs automatically the moment "new Book(...)" is called, immediately assigning both properties - no separate line is needed to set $title or $author afterward. - describe() reads $this->title and $this->author, referring to whichever object it was called on - the exact same method body produces two different results because $this points at a different object each time. - $book1 and $book2 are two completely independent objects, each with its own copy of $title and $author, even though both were created from the identical Book blueprint.