То, что другие говорили, что вы "не можете напрямую разыменовать возвращаемые значения из методов", не совсем правильно. Вы на самом деле «просто» не можете напрямую разыменовывать вновь созданные экземпляры класса, что вы и пытаетесь сделать. Но, конечно, можно сделать что-то вроде этого:
class Test {
public function a() {
echo "a";
return $this;
}
public function b() {
echo "b";
return $this;
}
public function c() {
echo "c";
return $this;
}
}
$test = new Test();
$test->a()->b()->c();
Таким образом, вы не можете напрямую что-то сделать с вновь созданным объектом, но вы можете сделать что-то с возвращаемыми значениями методов.
Другая ваша проблема в том, что getBody ничего не возвращает, заключается в том, что вы пытаетесь вернуть блок HTML, определенный вне блока PHP. Вы можете подумать, что PHP просто берет все, что вы написали между тегами?> И <? Php, и возвращает его в виде строки. Но вместо этого он просто запишет его в стандартный вывод (обычно в ваш браузер) и вернет метод без значения (void). </p>
Чтобы вернуть строку HTML, вы можете использовать обычные разделители строк, например:
function getBody() {
return
'<p style="color: red;">Hello</p>
<p>World</p>';
}