Hi Jörg,
was ist denn an der Fehlermeldung seltsam?
Sie sagt doch genau, in welchem script an welcher Stelle was erwartet wird und was Du der php-Funktion stattdessen gibst.
ja, das ist aber ganz seltsam, denn der Code sieht an dieser Stelle so aus: return str_replace( '{ main }', $view, $layout );
Und wenn ich ein var_dump() auf $view und auf $layout anwende, dann gibt es mir aus, dass es sich hierbei um einen string handelt. Und der wird ja auch erwartet. Auf jeden Fall sollte es ich nicht um einen booleschen Wert handeln, wie die Fehlermeldung behauptet.
Ich vermute, dass Du lokal noch auf php7 arbeitest und php8 da etwas nicht akzeptiert, was in php7 noch durchging.
Lokal verwende ich laut phpinfo() PHP Version 8.1.4. Auf dem STRATO-Server ist PHP Version 8.1.9 installiert. Kein großer Unterschied.
Überprüfe den 2. Parameter Deines str_replace in deiner view.php. Das muss ein String oder ein Array sein.
Im Ganzen sieht der (relevante) Code in der View-Class folgendermaßen aus:
class View {
public function getView(): string
{
foreach( $this -> params as $key => $value ) {
$$key = $value;
}
ob_start();
include "../app/views/layouts/default.php";
$layout = ob_get_clean();
include '../app/views/' . $this -> view . '.php';
$view = ob_get_clean();
return str_replace( '{ main }', $view, $layout );
}
public function __toString(): string
{
return $this -> getView();
}
}
Keine Ahnung, was hier schiefläuft, ehrlich gesagt, zumal es ja, wie gesagt, auf dem localhost ohne Probleme funktioniert …