jOm: variablen in classen

hallo,

ich habe 3 classen erstellt

A. ist die hauptklasse (eigenschaften und vars von A)
B. die 2. classe erbt die 1.classe (eigenschaften und vars von A+B)
C. die 3 erbt die 2 classe (eigenschaften und vars von A+B+C)

(PHP version = 4.3)

nun habe ich generell eine frage zu variablen in classen. ich habe immer probleme variablen aus einer anderen classe aus einer methode anzusprechen.

ich habe schon vesucht sie direkt am anfang tu definieren:

Z.B.:

class query
{
var $query, $test, $path;

function eins(){}

function zwei(){}
}

ich kann diese variablen dann später nicht in den anderen klassen mit $this->test ansprechen

was habe ich falsch gemacht??
muß ich bei jeder dieser klassen zu beginn die variblen definieren oder nur bei der haupklasse??

was muß ich tun?

gruß

jOm

  1. Hallo, jOm!

    Lies dir mal: "6. Vererbung in PHP und typische Fallen" durch.
    http://tut.php-q.net/klassen.html

    mfg, Till

  2. Variablen, die Du in der ersten Klasse definierst, existieren auch in allen davon abgeleiteten Klassen.

  3. ich kann diese variablen dann später nicht in den anderen klassen mit $this->test ansprechen

    wie kommst du darauf?
    wie macht sich das bemerkbar?
    wie ist die fehlermeldung?

  4. Hallo jOm,

    ich kann diese variablen dann später nicht in den anderen klassen mit $this->test ansprechen

    bestimmt 'n kleiner Syntaxfehler. Ich hab mal ein kleines Beispiel gemacht:

    <?php

    class urviech
    {
        var $farbe = "gruen";
    }

    class dino extends urviech
    {
        var $groesse = "XXL";

    function zeige_eigenschaften()
        {
            echo 'farbe: '.$this->farbe;
            echo '<br>';
            echo 'groesse: '.$this->groesse;
        }
    }

    $dino = new dino;
    $dino->zeige_eigenschaften();

    ?>

    Gruß, Andreas

    --
    SELFFORUM - hier werden Sie geholfen,
    auch in Fragen zu richtiges Deutsch
    1. HALLO,

      hab das problem jetzt gefunden.

      danke

      habe aber noch ein anderes problem:

      und zwar definiert ich anfangs eine global variable $temp, und die will ich im constructor printen.
      warun geht das nicht ??????

      <?php

      global $temp;
      $temp="../img/";

      class query
       {
        //CONSTRUCTOR query
        function query()
         {
         print $temp;
         }

      }

      $q=new query();

      ?>

      1. Hallo,

        'global $temp;' gehört in die Funktion, in der Du diese Variable verwenden willst. Der Anfang 'global $temp;' ist Quatsch, weil eine Variable automatisch global ist, wenn sie offen deklariert wird, also: $temp = "blah"; In der Funktion ist sie aber nicht bekannt. Mit 'global' machst Du eine Variable aus dem globalen Raum bekannt.

        //CONSTRUCTOR query
          function query()
           {
              global $temp;
              print $temp;
           }

        Gruß, Andreas

        --
        SELFFORUM - hier werden Sie geholfen,
        auch in Fragen zu richtiges Deutsch