Frage zu get_class_vars

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

  • Frage zu get_class_vars

    Hallo!

    Also: Ich habe zwei Klassen. Nun soll eine Funktion aus der Elternklasse die Eigenschaften mit Hilfe von get_class_vars herausfinden. Das soll so aussehen:

    PHP-Code:
    class {
       function 
    __construct ()
       {
          
    $eigenschaften get_class_vars(get_class($this));
       }
    }

    class 
    extends {
       var 
    $a;
       var 
    $b
       var 
    $c;  
    }

    $instanz = new B
    Logischerweise wird nun, da Klasse B ja keinen Konstruktor besitzt der Konstruktor von Klasse A ausgeführt. Das funktioniert aus soweit. Wenn ich in den Konstruktor von Klasse A echo (get_class($this)); schreibe dann wird auch "B" ausgegeben. Nur die Variable $eigenschaften bleibt leer ?
    Hat jemand ne Ahnung, wie ich das so hinbekomme, dass $eigenschaften nach instanziieren der Klasse B die Eigenschaften der Klasse B enthält?

  • #2
    Die Eigenschaften aus B sind in A nicht bekannt und stehen auch nicht zur verfügung.

    IMHO musst du den Konstruktor überschreiben um dein gewünschtes Ergebnis zu erhalten.

    Kommentar


    • #3
      Ich weiß gar nicht, was du willst!
      PHP-Code:
      <?php
           error_reporting
      E_ALL );
          class 
      {
             function 
      __construct ()
             {
                
      $eigenschaften get_class_vars(get_class($this));
                
      var_dump$eigenschaften );
             }
          }

          class 
      extends {
             var 
      $a;
             var 
      $b;
             var 
      $c;
             function 
      __construct() {
                 
      parent::__construct();
                
      $eigenschaften get_class_vars(get_class($this));
                
      var_dump$eigenschaften );
              }
          }

          
      $instanz = new B;
      ?>
      ergibt
      Code:
      array(3) {
        ["a"]=>
        NULL
        ["b"]=>
        NULL
        ["c"]=>
        NULL
      }
      array(3) {
        ["a"]=>
        NULL
        ["b"]=>
        NULL
        ["c"]=>
        NULL
      }

      Kommentar


      • #4
        Stimmt, das funktioniert ja wirklich. Na dann muss ich irgendwie noch herausfinden, warum es in meiner (zugegeben etwas komplexeren) An wendung nicht funktioniert. Hatte nur versucht das Problem fürs Forum etwas zu vereinfachen und ging davon aus, das sich das (prinzipiell ähnliche) vereinfachte Beispiel genauso verhält, die das komplexe

        Kommentar


        • #5
          OK, hab herausgefunden, warums bei mir nicht geklappt hat. Hatte die Eigenschaften in class B private gesetzt

          Kommentar


          • #6
            Folgendes geht auch ohne neuen Konstruktor:
            PHP-Code:
                class {
                public function 
            __construct ( ) {
                    
            print_r get_object_vars $this ) );
                }
            }
                
            class 
            extends {
                protected 
            $A;
                protected 
            $B;
                protected 
            $C;
            }
                
            $test = new ( ); 
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              Folgendes geht auch ohne neuen Konstruktor:
              Ich weiß, wolltes nur als Vergleich zeigen!

              Kommentar

              Lädt...
              X