Objektaufruf in selbstdefinierter Funktion geht nicht...
Patrick Kasper
- php
0 Anonymous0 XaraX
Hi zusammen,
ich versuche gerade, einen Template-Parser in einer von mir definierten Funktion aufzurufen, aber es kommt die Fehlermeldung "Call to a member function on a non-object".
Hier mal ein kleiner Ausschnitt aus meinem Quellcode:
function nachricht($text, $link = '', $weiterleiten = false, $zeit = 0)
{
$pet->readFile($tplpfad.'tbl_nachricht.html');
[...]
}
Was soll ich machen?
Auf jeden Fall schonmal danke für die Antworten!
Gruß Patrick
ich versuche gerade, einen Template-Parser in einer von mir definierten Funktion aufzurufen, aber es kommt die Fehlermeldung "Call to a member function on a non-object".
Hier mal ein kleiner Ausschnitt aus meinem Quellcode:
function nachricht($text, $link = '', $weiterleiten = false, $zeit = 0)
{
$pet->readFile($tplpfad.'tbl_nachricht.html');[...]
}
Wo kommt $pet her?
Hallo Patrick,
Versuche es bitte so:
> function nachricht($text, $link = '', $weiterleiten = false, $zeit = 0)
> {
global $pet;
> $pet->readFile($tplpfad.'tbl_nachricht.html');
>
> [...]
> }
Gruß aus Berlin!
eddi
Hi eddi,
ich habs mit deinem Vorschlag
global $pet;
probiert, aber es klappt trotzdem nicht. Die Fehlermeldung verschwindet zwar, aber der Template-Parser tut nix...
Gruß Patrick
PS: $pet ist der Template-Parser, der über ein include in die Datei kommt...
Hi Patrick
poste bitte etwas mehr, als "es klappt trotzdem nicht". Welche PHP-Version hast Du (welches SAPI)? Kann man sich den Quellcode online ansehn?
Gruß aus Berlin!
eddi
Hi eddy,
ich habe PHP 4.2 und einen Apache 2 Webserver, der auf RedHat-Linux läuft.
Wenn ich jetzt den Parser mit global einführe wie du das gesagt hast, dann kommt zwar keine Fehlermeldung mehr, der Parser tut jedoch immer noch nicht, was er soll (nämlich das Template parsen und ausgeben). Wenn ich jetzt das function(...) weg mache, also den Quellcode nicht in eine Funktion packe, dann klappt es und der Parser tut was er soll...
Ich hab auch schonmal versucht, $pet als Argument der Funktion zu übergeben. Dabei ergab sich aber das gleiche Problem wie mit global. Keine Fehlermeldung, aber der Parser funktionierte auch nicht.
Gruß Patrick
Hi,
function nachricht($text, $link = '', $weiterleiten = false, $zeit = 0)
{
global $pet;
$pet->readFile($tplpfad.'tbl_nachricht.html');[...]
}
Schonmal geprüft, ob das Fle geöffnet wird? Es ist nicht gut, eine Datei ungeprüft zu öfnen, da du damit nicht feststellen kannst, ob ein fehler aufgetreten ist.
Ich vermute, das $tplpfad auch nicht in der Funktion verfügbar ist. Also musst du das auch per global der besser $GLOBALS[] machen.
Solceh Fehler kannst du durch eine Erfolgsprüfung vermeiden beim öffnen einer Datei
echo $begrüßung;
Keine Fehlermeldung, aber der Parser funktionierte auch nicht.
Wahrscheinlich kommt aber eine Notice, die in den meisten Default-Einstellungen ausgeschaltet sind. Zum Einschalten ist das error_reporting auf E_ALL zu setzen.
echo "$verabschiedung $name";