ID: 30958 Comment by: rampant at gmail dot com Reported By: schaa101 at tech dot nhl dot nl Status: Open Bug Type: Class/Object related Operating System: Windows XP Pro SP2 PHP Version: 5.0.2 New Comment:
If error_reporting(E_ALL) is set, you will see that instead of setting $this in a singleton, $this is set in the Main class. Here is the notice: Notice: Undefined property: Main::$instance in C:\eclipse\workspace\tmote\tmp_singles.php on line 12 Where line 12 is: if( $this->instance == null ) Replacing $this->instance with self::$instance and private $instance = null; with, private static $instance = null; Will make the code behave as expected. Previous Comments: ------------------------------------------------------------------------ [2004-12-02 12:16:30] schaa101 at tech dot nhl dot nl <?php class Singleton1 { private $instance = null; private function __Construct() { } public function & GetInstance() { if( $this->instance == null ) $this->instance = new Singleton1(); return $this->instance; } public function Write( $message ) { print "Singleton1 - " . $message; } } class Singleton2 { private $instance = null; private function __Construct() { } public function & GetInstance() { if( $this->instance == null ) $this->instance = new Singleton2(); return $this->instance; } public function Write( $message ) { print "Singleton2 - " . $message; } } class Main { public function __Construct() { Singleton1::GetInstance()->Write( "Singleton1" ); echo "<br/>"; Singleton2::GetInstance()->Write( "Singleton2" ); } } new Main(); ?> ------------------------------------------------------------------------ [2004-12-02 11:10:41] [EMAIL PROTECTED] Please post the code here. ------------------------------------------------------------------------ [2004-12-02 11:09:30] schaa101 at tech dot nhl dot nl Description: ------------ When you use 2 singletons, the second singeleton also returns the instance of the first. If you change the name of the variables, that store the instance of the singleton class, inside the singletons and make them both unique, the problem is solved though. Reproduce code: --------------- http://klaas.fiskaaf.com/singleton-bug.rar or try http://klaas.fiskaaf.com/singleton-bug.zip Expected result: ---------------- Singleton1 - Singleton1 Singleton2 - Singleton2 Actual result: -------------- Singleton1 - Singleton1 Singleton1 - Singleton2 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30958&edit=1