Instanzen eines Objektes zählen
Lucas
- php
Hallo zusammen,
wie der Titel bereits andeutet, möchte ich die Instanzen einer class zählen. In der folgenden Klasse soll $count die Anzahl der Instanzen sein (bzw. einfacher: die Anzahl der Aufrufe des Konstruktors, das würde mir schon reichen) und $number eine einmalig vergebene Nummer pro Instanz, abhängig von $count:
class Test{
static $count;
var $number;
function Test(){
if(!isset($this->count)) $this->count = 1;
$this->number = $this->count;
$this->count++;
}
function getNumber(){
return $this->number;
}
}
$foo = new Test;
$bar = new Test;
echo $foo->getNumber() . "\n" . $bar->getNumber();
Soweit mein bisher sinnvollster Versuch, der jedoch scheitert, als Ausgabe bekomme ich:
1
1
Es ist wohl nicht möglich, static-Variablen für classes genauso zu nutzen wie für Funktionen?!
Wie kann ich das Problem denn Lösen? Ich bin auf der Suche bereits auf Singleton gestoßen, weiss allerdings nicht genau, wie damit umzugehen ist. Allerdings klang das nach einem Ansatz. Oder vielleicht geht es ganz anders?
Mit Bitte um Hilfe und Dank im Voraus,
Lucas
echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';
eine Suchmaschine hat innerhalb von weniger als eine Sekunde mehrere brauchbare und teilweise ausführliche Antworten geliefert. Ein Beispiel? http://www.admin-wissen.de/tutorials/eigene-tutorials/webentwicklung/php-tutorial/klasse-und-sichtbarkeitsattribute-in-php5/
Grüße
Markus
echo $begrüßung;
class Test{
static $count;
function Test(){
if(!isset($this->count)) $this->count = 1;
Es ist wohl nicht möglich, static-Variablen für classes genauso zu nutzen wie für Funktionen?!
Statische Variablen werden genau wie statische Methoden nicht über eine Instanz und mit -> angesprochen sondern über die Klasse und mit ::
Wenn du das error_reporting auf E_ALL stellst, werden dir auch Hinweise bei Zugriffen auf nicht vorhandene Variablen angezeigt. Wenn du mit OOP hantierst, ist zusätzlich zu E_ALL auch noch E_STRICT zu empfehlen (E_STRICT | E_ALL).
echo "$verabschiedung $name";