MM: Probleme mit Sigleton in PHP4

Beitrag lesen

Hallo zusammen,

ich habe folgendes Problem: Ich brauche ein Sigleton und habe nur PHP4 (nicht 5) zur Verfügung. Mein Ansatz ist folgender:

class FormFieldManager {
 var $types = array();

function getInstance() {
  static $instance;
  echo("getInstance<br>");
  if (!isset($instance)) {
   echo("Neue Instanz<br>");
   $instance = new FormFieldManager();
  }
  return $instance;
 }

function registerFieldType($inFieldType) {
  array_push($this->types, $inFieldType);
 }

function getTypes() {
  return $this->types;
 }

}

$a = FormFieldManager::getInstance();
$b = FormFieldManager::getInstance();

$a->registerFieldType("bla");
echo (sizeof($a->getTypes()). "\t" . sizeof($b->getTypes())."<br>");

$b->registerFieldType("blub");
echo (sizeof($a->getTypes()). "\t" . sizeof($b->getTypes()));

Der Aufruf liefert folgende Ausgabe:
getInstance
Neue Instanz
getInstance
1 0
1 1

Man sieht also, dass die getInstance-Methode schon ganz gut funktioniert. Es wird wie gewünscht nur beim ersten Aufruf eine Instanz erzeugt. So weit; so gut.

Somit sollten $a und $b identisch sein, oder?

Nun füge ich bei $a mit registerFieldType() etwas hinzu und lasse mir die Größe der types-Arrays ausgeben. Und siehe da: $a und $b unterscheiden sich. Warum???

Was mache ich falsch?

Vielen Dank im Vorraus!