Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] OOP mit PHP 5, Methode kann nicht innerhalb der class ausgeführt werden

Einklappen

Neue Werbung 2019

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

  • [Erledigt] OOP mit PHP 5, Methode kann nicht innerhalb der class ausgeführt werden

    Hallo,

    in den untenstehnden PHP-Script kann ich die Methode "funPrintAllgemeineDaten()" nur extern ausführen. Wenn ich die Methode ($this->funPrintAllgemeineDaten() innerhab der Klasse ausführe, erhalte ich diese Fehlermeldung:
    Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\Programme\xampp\htdocs\unit_class_2.php on line 20

    PHP-Code:
    <?php
        
    class clKraftfahrzeuge
            
    {
                protected 
    $arrAllgemeineDaten;
                
                function 
    __construct($ps$MaxKmh$NutzlastInTonnen)
                    {
                        
    $this->arrAllgemeineDaten["PS"] = $ps;
                        
    $this->arrAllgemeineDaten["MaxKmh"] = $MaxKmh;
                        
    $this->arrAllgemeineDaten["NutzlastInTonnen"] = $NutzlastInTonnen;
                    }    
                    
                function 
    funPrintAllgemeineDaten()
                    {
                        foreach (
    $this->arrAllgemeineDaten as $key=>$val)    
                            {
                                echo 
    $key ": " $this->arrAllgemeineDaten[$key] . "<br>";
                            }
                    }
                
    // $this->funPrintAllgemeineDaten();
                
            
    }
        
    $test = new clKraftfahrzeuge(447820);
         
    $test->funPrintAllgemeineDaten();
    ?>
    Da ich die Objektvariable innerhalb der Klasse mit $this ersetzt habe, sollte es doch laufen, oder?

  • #2
    Die Zeile mit $this->fun.... steht ausserhalb der Methodendeklaration.
    Code:
    function ..()
    {
    }
    $this->methodcall(); // <- Fehler
    Wenn Du mir einen Gefallen tun willst, benutze bitte keinen deutsch-englischen Mischmasch in den Bezeichnern. Und was bedeutet das Prefix "fun"?

    Kommentar


    • #3
      David: Dank für deine schnelle Antwort. Das Prefix "fun" setze ich vor Funktionen. Jetzt habe ich es verstanden: eine Methode kann nicht von der Klasse selbst ausgeführt werden, sondern nur von einer anderen Methode.

      Kommentar


      • #4
        Ich möchte von "fun" abraten. Das kleingeschriebene Verb am Anfang (print) enthält (oder kann enthalten) bereits die Information "Methode/Funktion".
        Insgesamt finde ich ungarische Notation, bei der nur der nackte allgemeine Typ aber nicht die Bedeutung codiert wird, für überflüssig, manchmal sogar störend - auch bei schwach typisierten Sprachen wie php.

        Kommentar


        • #5
          Außerdem handelt es sich innerhalb von Klassen genau genommen um Methoden. Das heißt, Du müßtest dann fun mit met (Wortwitz verstanden ? ) ersetzen.
          Auch wenn ich an sich Fan der ungarischen für Variablennamen bin - ist das Prefix wirklich überflüssig. Allenfalls für Dopplungen und Seiteneffekte mit Fremdsoftware bietet sich sowas an - hier würde ich aber eher zu einem Prefix des Frameworks (oder der Funktionssammlung) raten.
          [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


          • #6
            Zitat von nikosch77-new Beitrag anzeigen
            Auch wenn ich an sich Fan der ungarischen für Variablennamen bin
            Ich auch. Aber in der ursprünglichen Form, so wie Charles Simonyi sich das gedacht hat Also nicht sowas wie lCount oder oUsr sondern zum Beispiel cbInputbuffer. Also eine funktionale, semantische Auszeichnug und nicht etwas, worum sich in stark typisierten Sprachen eh Compiler oder IDE kümmern sollten.

            Kommentar


            • #7
              worum sich in stark typisierten Sprachen eh Compiler oder IDE kümmern sollten.
              Da kann man in PHP schon mal schwach werden finde ich...
              [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

              Lädt...
              X