Fatal error: Call to member function on a non-object in
-
Hi!
Ich habe versucht ein Templatesystem (http://codewalkers.com/tutorials/58/1.html) zu benutzen. Dabei bekomme ich dann aber den folgenden Fehler:
Fatal error: Call to a member function on a non-object in **/main.php on line 13
Ich kann mir irgendwie nicht erklären wie der zustande kommt, denn bei mir wird
$page = new Page(realpath("template/head.html"));
vor
$page->output();
aufgerufen.
http://www.php-fehlermeldungen.de/artikel,34,fatal-error-call-to-a-member-function-on-a-non-object-in,.htmlAuerdem sagt er ja auch, dass der Fehler in main.php zustande kommt und nicht in news.php.
Vielleicht könnt ihr mir helfen.
news.php
<?php $page = new Page(realpath("template/head.html")); if(isset($_GET['language']) && !empty($_GET['language'])) { language("main", $_GET['language']); } else { language("main"); } $page->output(); ?>
main.php
<?php /* M_* : Meta Tags etc L_* : Language I_* : Include P_* : Picture F_* : Function */ $page->replace_tags(array( "m_title" => "Hier ist der Titel", "password" => "Passwort", "title" => "bla" )); ?>
Vielen Dank schonmal für eure Hilfe.
-
Öhmmm, ohne jetzt genau aus deinem Code und der Fehlermeldung schlau zu werden.
Aber hast du mal nach der Deklaration von $page nachgesehen was $page ist?
is_object oder var_dump ?Gruß,
Heimwerkerking
-
Du includierst doch sicher die news.php in die main.php oder?
Wenn ja, an welcher Stelle?
Nach oder vor dem...?$page->replace_tags(array( "m_title" => "Hier ist der Titel", "password" => "Passwort", "title" => "bla" ));
-
Also auf Killersnoop's Beitrag hin habe ich einfach mal folgendes ausprobiert.
news.php
<?php $page = new Page(realpath("template/head.html")); include(realpath("languages/german/main.php")); $page->output(); ?>
Dieser Code funktioniert auch. Ich verstehe nur nicht, wieso das nicht auch mit der language-Funktion (wie im letzten Beitrag) funktioniert.
language.php
<?php function language($file, $language="german") { $dir = "languages/"; $folder = array(); $handle = opendir($dir); while($folders = readdir($handle)) { if ($folders != "." && $folders != "..") { if(is_dir($dir)) { $folder[$folders] = $folders; } } } if(isset($folder[$language]) && !empty($folder[$language])) { include(realpath("languages/".$language."/".$file.".php")); } else { exit("Error 006: The language is not supported"); } closedir($handle); } ?>
Die Funktion funktioniert, denn so includiere ich auch die error.php in der index.php
-
Killersnoop schrieb:
Du includierst doch sicher die news.php in die main.php oder?
Wenn ja, an welcher Stelle?
Nach oder vor dem...?$page->replace_tags(array( "m_title" => "Hier ist der Titel", "password" => "Passwort", "title" => "bla" ));
Nein umgekehrt. Ich includiere die main.php in die news.php.