Funktion in Funktion in Klasse

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

  • Funktion in Funktion in Klasse

    Soweit ich weis, ist es problemlos möglich, in einer Funktion eine weitere Funktion zu deffinieren. Bei folgender verschachtelung tritt aber ein Problem auf:

    PHP-Code:
    class xyz{

        function 
    abc(){

            function 
    def(){
                print 
    'Funktion def';
            }

            print 
    'Function ABC';
            
    def();
        }

    Sobald die Funktion abc() aufgerufen wird kommt folgende Fehlermeldung:
    Fatal error: Non-static method xyz::def() cannot be called statically in xxx on line xxx
    Wenn ich versuche die Funktion mit $this->def(); aufzurufen kommt logischer Weise nur:
    Fatal error: Call to undefined method xyz::def() in xxx on line xxx
    Weis vielleicht jemand, wie ich die Funktion aufrufen kann? Ich würde mich über eine Antwort freuen.
    XblaX
    Zuletzt geändert von xblax; 12.04.2005, 15:46.

  • #2
    zahlen als funktionsnamen?

    Kommentar


    • #3
      Stimmt, das geht natürlich normalerweise nicht, aber es ist ja nur ein Beispiel und mir ist gerade einfach kein Name für eine Beispielfunktion eingfallen.

      [Edit: Zahlen entfernt und durch einen String ersetzt. ]

      Kommentar


      • #4
        was hast du denn für eine php-version?
        bei mir klappen sowohl
        PHP-Code:
        xyz::abc(); 
        als auch
        PHP-Code:
        $x = new xyz;
        $x->abc(); 
        wunderbar.

        p.s. hab 4.3.9

        Kommentar


        • #5
          Lasse folgenden Code mal als Beispiel Laufe:

          PHP-Code:
          <?PHP
          class xyz{

              function 
          abc(){

                  function 
          def(){
                      print 
          'Funktion def';
                  }

                  print 
          'Function ABC';
                  
          def();
              }
          }
          $xyz = new xyz;
          $xyz->abc();
          ?>
          Die Erscheinende Ausgabe ist:
          Function ABC
          Fatal error: Non-static method xyz::def() cannot be called statically in S:\SERVER\site\public_html\test.php on line 11

          Es muss doch auch möglich sein, innerhalb der Funktion abc() eine weitere Funktion zu definieren und die auch auf zu rufen.

          Ich hab es mit PHP 5.0.3 getestet.

          Kommentar


          • #6
            klappts eins-a.

            würd doch glatt mal vermuten, dass sich da was mit der version verändert hat.

            Kommentar


            • #7
              Ja muss wohl so sein, ich habe das Skript eben nochmal mit PHP 4.3.10 auf einem WAMP und LAMP getestet und da hat es beidesmal 1 A funktioniert funktioniert.

              Ich hab immer gedacht mit PHP 5 soll das Objektorientierte Programmieren besser unterstützt werden ...

              Kommentar


              • #8
                wird es auch, allerdings nicht durch die perverse verschachtelung.

                ich kann mir nicht erklären, was es für einen praktischen sinn haben soll. wenn eine methode etwas spezielles machen muss, kann sie es auch mithilfe einer anderen methode der selben klasse bzw. mit einer woanders definierten funktion.

                Kommentar

                Lädt...
                X