Membervariablen leer obwohl Werte zugewiesen wurden ?

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

  • Membervariablen leer obwohl Werte zugewiesen wurden ?

    Die Ausgabe im Browser sollte so aussehen:

    test1: Wert1
    test2: Wert2

    bekomme aber

    test1:
    test2:

    angezeigt!

    Ich habe schon lange in PHP nichts mehr gemacht und zwischenzeitlich andere Sprachen gelernt, aber sowas Grundlegendes sollte ich doch noch hinbekommen....

    Hier mein Testquellcode:

    PHP-Code:
    <?PHP
        
    class testdaten
        
    {
            var 
    $test1;
            var 
    $test2 "Wert2";
            
            function 
    testdaten($string)
            {
                
    $test1 $string;
            }
            
            function print()
            {
                echo 
    "test1: ".$test1."<br>\n";
                echo 
    "test2: ".$test2."<br>\n";
            }
        }
    ?>

    <?PHP
        $db 
    = new testdaten("Wert1");
        
        
    $db->print();
    ?>

    Warum werden die Membervariablen nicht initialisiert bzw. warum verlieren diese ihren Inhalt ?


    Übrigens:

    in der Print-Methode habe ich auch folgendes Ausprobiert mit gleichem Ergebnis:

    PHP-Code:
    echo....$this->test1..... 
    Zuletzt geändert von Master0Blicker; 14.12.2006, 16:21.

  • #2
    du solltest deine funktion nicht print nennen. das gibt es schon.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Im Konstruktor statt
      Code:
      $test1 = $string;
      
      $this->test1 = $string;
      . Selbiges zählt für $test1 und $test2 in der Methode print(), die - mit diesem Namen - übrigens einen parse error erzeugt. Umbenennen und dann geht's.
      Nieder mit der Camel Case-Konvention

      Kommentar


      • #4
        Sorry, die Methode nannte ich nicht wirklich print() sondern prt(), nur um es hier zu verdeutlichen habe ich beim Einfügen print() daraus gemacht in der unwissenheit das dies gar nicht gehen dürfte.

        alos, das gleiche nochmal nur mit der Methode prt() anstatt print()......


        Die Klasse verliert die Werte einfach wieder!


        Folgendes ist jetzt genau aus UE32 kopiert:

        PHP-Code:
        <?PHP
            
        class daten
            
        {
                var 
        $test1;
                var 
        $test2 "test2";
                
                function 
        daten($string)
                {
                    
        $test1 $string;
                                                        echo 
        "Konstruktor durchlaufen!<br>\n";
                }
                
                function 
        prt()
                {
                    echo 
        "test1: ".$this->test1."<br>\n";
                    echo 
        "test2: ".$this->test2."<br>\n";
                }
            }
        ?>

        <?PHP
            $db 
        = new daten("Test2");
            
            
        $db->prt();
        ?>
        Jetzt sieht die Ausgabe so aus:

        Konstruktor durchlaufen!
        test1:
        test2: test2


        sprich: der Wert beim initialisieren ist ok, beim Konstruktor nicht bzw. die Zuweisung bringt gar nichts!

        Hab mein Apache2.0 mit PHP 4.4.x für Win32 vielleicht falsch installiert ?
        Wenn es läuft dann müssten solche grundlegenden Dinge doch auch laufen, also nichts mit flasch konfiguriert in der php.ini oder so ?

        Kommentar


        • #5
          Nochmal: Im Konstruktor mit $this->test1 = $string arbeiten und nicht ohne die Pseudovariable $this. Dann funktioniert's auch.
          Nieder mit der Camel Case-Konvention

          Kommentar

          Lädt...
          X