Метод displayBook()
не возвращает строку (или что-либо в этом роде), поэтому вам не следует использовать результат в конкатенации.
То, что происходит, это вызов displayBook()
в echo
в setAndDisplay()
происходит до echo
завершения.
Вы должны использовать разные методы для прямого вывода по сравнению с генерацией строки, например
public function getBook()
{
return sprintf('Title: %s published on %s',
$this->title,
$this->publishedDate);
}
public function displayBook()
{
echo $this->getBook();
}
public function setAndDisplay($newTitle, $newDate)
{
$this->title = $newTitle;
$this->publishedDate = $newDate;
echo "The new information is of the book <b>", $this->getBook(), "</b><br />";
}
Редактировать: Я бы серьезно переоценил необходимость для вашего класса напрямую echo
данных. Это редко хорошая идея.
Edit2: передача параметров в echo
быстрее, чем объединение