Hallo, ich habe ein Problem mit dem Singleton Design Pattern. Ich brauche eine Variable oder Klasse (ist ja auch erstmal egal) welche über die gesamte Laufzeit des Servers zur Verfügung steht und die es eben auch nur einmal gibt. Eben ein "echtes" Singleton. Wenn es sie noch nicht gibt soll sie beim 1. Mal instanziiert werden. Aber mit folgendem Code funktioniert es leider nicht.
Ausgabe
1. Request http://localhost/singleton.php
value = values
2. Request http://localhost/singleton.php?var=test
value = test
3. Request http://localhost/singleton.php
value = values
Obwohl ja beim 3. Request test erscheinen sollte. Warum wird das Singleton bei jedem Request neu instanziiert?
Danke für Eure Hilfe.
PHP-Code:
<?php
class Singleton {
private static $instance=null;
private static $value=null;
private function __construct($value) {
$this->value = $value;
}
public function setValue( $value) {
$this->value = $value;
}
public function getValue( ) {
return $this->value;
}
public static function getInstance() {
if( self::$instance == null ) {
self::$instance = new Singleton("values");
}
return self::$instance;
}
}
$x = Singleton::getInstance();
if( $_REQUEST["val"] != "") {
$x->setValue( $_REQUEST["val"]);
}
echo "<br>value = ".$x->getValue();
?>
1. Request http://localhost/singleton.php
value = values
2. Request http://localhost/singleton.php?var=test
value = test
3. Request http://localhost/singleton.php
value = values
Obwohl ja beim 3. Request test erscheinen sollte. Warum wird das Singleton bei jedem Request neu instanziiert?
Danke für Eure Hilfe.
Kommentar