Patrick Kasper: Objektaufruf in selbstdefinierter Funktion geht nicht...

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

  1. 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?

  2. 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

    1. 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...

      1. 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

        --
        POST SCRIPTA SIND UNÜBERLEGTE HANDLUNGEN IM KONTEXT EINES HTML-FORMULARS!
        1. 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

          1. 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
            
          2. 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";