Ankündigung

Einklappen
Keine Ankündigung bisher.

Call to a member function on a non-object :)

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Call to a member function on a non-object :)

    Hi,
    ich habe eine Frage zu folgendem Verhalten:

    Ich erzeuge in meinem Skript ein Objekt, und speichere es (aus Gründen der Fehlersuche) so:

    PHP-Code:
    $oma = new ObjectManager();
    $cfg['oma'] = $oma
    Beide Variablen zeigen auf das selbe Objekt. Jetzt rufe ich an anderer Stelle (ein anderes Skript) eine Methode auf:

    PHP-Code:
    $oma->test();
    $cfg['oma']->test(); 
    Funktioniert beides nicht, der einzige Output ist "Call to a member function test() on a non-object", soweit klar. Jetzt deklariere ich die Variablen als global:

    PHP-Code:
    global $cfg;
    $cfg['oma']->test(); 
    Dieser Aufruf funktioniert einwandfrei.

    PHP-Code:
    global $oma;
    $oma->test(); 
    Der nicht, er tut nicht das, was in der Methode steht, und es kommt wieder der Fehler (""Call to a member function..."). Allerdings bricht das Skript nicht sofort ab, sondern zeigt die gesamte Webseite an, und ganz unten unter der Seite kommt dann "zusätzlich" der Fehler. Wer kann mir das erklären?
    mfg

  • #2
    Das Manual: http://php.net/manual/en/language.variables.scope.php
    Das Wiki: http://www.php.de/wiki-php/index.php/Namensraum

    [MOD: Thread geschlossen]
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Ich glaube, du solltest dich noch einmal mit den Sichtbarkeitsbereichen/Scopes von Variablen auseinandersetzen. global ist nie eine gute Lösung. Übergib die Objekte lieber als Parameter, wenn du sie in Funktionen nutzen willst.
      Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

      Kommentar


      • #4
        So ganz können wir das nicht sagen. Wo wird $oma und $cfg['oma'] denn definiert? IN einer Methode oder Funktion? Dann ist klar dass die Variablen nicht im globalen Namespace liegen.

        Schreib uns mal ein komplettes Beispiel Skript.

        Kommentar


        • #5
          So, jetzt Chriz nochmal, dann haben wir sie alle.
          Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

          Kommentar

          Lädt...
          X