Ankündigung

Einklappen
Keine Ankündigung bisher.

methode in klasse aus einer anderen starten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • methode in klasse aus einer anderen starten

    Hallo alle zusammen,

    Ich habe eine kleine Klasse mit 2 Methoden und 1 Konstruktor.
    Ich möchte in der funktion 2 die funktion 1 aufrufen.

    Er bringt mir aber einen Fehler:
    Fatal error: Call to undefined function: funktion1() in /homepages/8/d23637......... ... xyz.php on line 72

    ... es sind aber beide Funktionen vorhanden.

    Was mach ich denn falsch?

    Mario

  • #2
    Vielleicht $this vergessen?
    Vielleicht auch nicht. Ohne Code schwer zu sagen.

    Kommentar


    • #3
      Zitat von GELight
      ... es sind aber beide Funktionen vorhanden.
      Nicht vielleicht beide Methoden?

      http://php.net/oop
      http://php.net/oop5

      Kommentar


      • #4
        Jop... natürlich meinte ich doch die Methoden in der Klasse.
        Sind ja am Ende auch "nur" Klassen... nur halt in der CLASS.

        Jetzt scheints zu gehen. Es lag am fehlenden $this-> vor meinem Funktionsaufruf.

        Mario

        Kommentar


        • #5
          Jetzt scheints zu gehen. Es lag am fehlenden $this-> vor meinem Funktionsaufruf.
          Genau das macht die scheinbare kleinkarierte Unterscheidung zwischen Methoden und Funktionen wichtig

          Kommentar


          • #6
            und mal wieder stand der Fehler wort-wörtlich in der Fehlermeldung

            Kommentar


            • #7
              ...Call to undefined function: funktion1() ....

              Naja... so wörtlich wars aber nun nicht.
              Hier steht nur, dass die Funktion, die ich aufrufen wollte nicht definiert wäre.
              Sie war ja aber definiert. Ich hab sie nur falsch angesprochen.

              Ich vermute, da ich das $this-> vergessen habe, wollte er diese Function außerhalb der Klassse aufrufen. Und da ist sie natürlich nicht vorhanden gewesen. Von der Sicht aus stimmt die Meldung wieder.

              Mario

              Kommentar


              • #8
                Ne, tut mir leid, dann hast du es nicht verstanden. Die Funktion war wirklich nicht definiert, weil es innerhalb der Klasse keine Funktion ist, sondern eine Methode. Ergo: Wort-wörtlich! Wenn du allerdings versuchst eine nicht-vorhandene Methode aufzurufen, sieht die Fehlermeldung schon ein wenig kryptischer aus.
                Fatal Error: Using $this when not in object context in ...
                Funktion: Definiert im globalen Geltungsbereich. Wirfst was rein, kommt was raus.
                Methoden: Definiert innerhalb der Klasse/Objekt. Wirfst was rein, kommt was raus, was aber abhängig sein kann, von der Klasse/Objekt selbst.

                Kommentar


                • #9
                  Okay... verstehe.
                  Also ich weiß, dass man IN einer Klasse immer nur von Methoden spricht.
                  Und diese "müssen" sozusagen mit $this-> angesprochen werden... korrekt?
                  Somit war meine Fehlermeldung schon richtig so... stimmt schon.

                  Mario

                  Kommentar


                  • #10
                    Funktionen einer Klasse sind Methoden
                    Variablen einer Klasse sind Eigenschaften
                    Variablen innerhalb von Methoden aber sind Variablen ^^

                    Es geht darum, wodurch die Klasse repräsentiert wird. Die Klasse wird eindeutig definiert, welche Methoden und Eigenschaften sie besitzt. Wie genau sie dabei aussehen ist zweitrangig.

                    Nen nettes Beispiel, was ich ma irgendwo gehört habe:
                    Stell dir die Klasse vor als eine Art Blaupause. Diese Blaupause handelt von einem Auto. Die Methode, die diese Klasse besitzt heißt "fahren". Ohne die Klasse an sich, also als Funktion, ergibt "fahren" keinen Sinn.

                    Kommentar


                    • #11
                      Jop... das hab ich soweit verstanden alles.
                      Funktioniert nun auch einwandfrei alles.

                      Ich hatte eben nur Function statt Methode gesagt...
                      Aber vielen dank nocheinmal für die Richtigstellung. Kann nur helfen für die Zukunft..

                      Mario

                      Kommentar

                      Lädt...
                      X