Announcement

Collapse
No announcement yet.

gibt es keine statischen Klassen-Variablen in PHP 4xx ?

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

  • gibt es keine statischen Klassen-Variablen in PHP 4xx ?

    Hallo an alle, <br><br>

    um auf einfache Weise die Anzahl von Objekten
    einer Klasse zu erhalten dache ich an eine
    statische Variable. Ich finde aber nirgendwo
    was über "static var" <br><br>

    Gibt es keine statischen Variablen in Klassen
    bei PHP4 ?? oder suche ich an den falschen
    Stellen <br><br>

    Gruß Uwe

  • #2
    Meinst du <a href="http://de3.php.net/static#language.variables.scope.static">sowas?</a&gt

    Comment


    • #3
      Hallo xabbuh, <br>

      genau sowas meine ich.
      <br>
      Aber in der Art von: <br>
      <br>
      class xy { <br>
      var $a; <br>
      var $b: <br>
      static var $count=0; <br>
      <br>
      function xy() { <br>
      ... <br>
      // Anzahl der Objekte erhöhen <br>
      $(this->)count++; <br>
      ... <br>
      } <br>
      function wieviel_xy_objekte_gibt_es () { <br>
      return $(this->)count; <br>
      } <br>
      } <br>
      <br>
      jedes Objekt soll wissen können, wieviele <br>
      Objekte der Klasse angelegt wurden. <br>
      <br>
      Vielleicht wird die Frage so klarer. <br>
      <br>
      Gruß Uwe

      Comment


      • #4
        Wäre da ein einfach <a href="http://de2.php.net/manual/de/function.get-class-methods.php">count(get_class_methods())</a> nicht einfacher

        Comment


        • #5
          @Uwe: Die Definition mußt Du in den Konstruktor packen, dann sollte es gehen, andernfalls kannst Du auch eine GLOBAL einführen. Letzte Möglichkeit wäre noch eine Elternklasse, die die einzelnen instanzen der Unterklasse verwaltet.<br />
          <br />
          @xabbuh: count(get_class_methods()) sollte doch eigentlich nur die Methoden einer einzelnen Klasseninstanz zählen, nicht die Instanzen einer Klasse

          Comment


          • #6
            Hi Uwe,

            hier meine Lösung:

            class xy {
            var $a;
            var $b:
            var $count;

            function xy() {
            ...
            static $ClassXYCount;
            $this->count = & $ClassXYCount;
            // Anzahl der Objekte erhöhen
            $this->count++;
            ...
            }

            function wieviel_xy_objekte_gibt_es () {
            return $this->count;
            }
            }

            Zur Erklärung:

            Im Konstruktor (function xy) rufe ich die statische Variable $ClassXYCount auf und weise diese als Referenz (&) der Klassenvariable $count zu. Als Referenz bedeutet, die Variable zeigt bei allen Instanzen auf den selben Wert (vereinfacht augedrückt).

            Gruß
            Richar

            Comment


            • #7
              > @xabbuh: count(get_class_methods()) sollte doch eigentlich nur die Methoden einer einzelnen Klasseninstanz zählen, nicht die Instanzen einer Klasse.

              Oh stimmt, da hatte ich mich verlesen

              Comment


              • #8
                Hallo Richard, <br>
                dein Vorschlag ist der richtige. So funktioniert
                es. <br>
                Aus lange vergangenen C-Tagen schwirren
                noch einige Erinnerungen zum Thema Zeiger
                und Referenzen in meinem Hinterkopf herum.
                <br>
                Das hat mich etwas irritiert, aber der Versuch
                hat gezeigt, daß deine Lösung korrekt ist.

                Danke dir und allen anderen für die Hilfe.
                <br>
                Gruß uw

                Comment

                Working...
                X