Funktion in Funktion in Klasse

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by xblax; 12-04-2005, 15:46.

  • #2
    zahlen als funktionsnamen?

    Comment


    • #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. ]

      Comment


      • #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

        Comment


        • #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.

          Comment


          • #6
            klappts eins-a.

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

            Comment


            • #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 ...

              Comment


              • #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.

                Comment

                Working...
                X