Revision: 451
Updated Code
at February 20, 2007 03:47 by ekobudisetiyo
Updated Code
//PHP5 only class singleton_helper { var $__x = array(); public static function singleton() { static $class = null; if($class == null) { $c = __CLASS__; $class = new $c; } return $class; } function __construct(){} function __get($name) { $name = strtolower($name); if(isset($this->__x[$name])) { return $this->__x[$name]; } } function __set($name,$val) { $this->__x[strtolower($name)] = $val; } function __isset($name) { return isset($this->__x[strtolower($name)]); } } class singleton { var $____variable; function __construct() { $name = get_class($this); if(!isset(singleton_helper::singleton()->{$name})) { singleton_helper::singleton()->{$name} = new singleton_helper(); } $this->____variable = &singleton_helper::singleton()->{$name}; } function __set($name,$value) { $this->____variable->$name = $value; } function __get($name) { return $this->____variable->$name; } function __isset($name) { return isset($this->____variable->$name); } } //Unit Test Bellow class singleton_x extends singleton { function __cunstruct() { parent::__construct(); } function test() { return 'test'; } } class singleton_y extends singleton_x { function __cunstruct() { parent::__construct(); } } class TestOfSingleton extends UnitTestCase { function __construct() { $this->UnitTestCase(); } function test_one() { $test1 = new singleton_x(); $test1->a = 1; $this->assertEqual(1,$test1->a); $test2 = new singleton_x(); $this->assertEqual(1,$test2->a); $test2->a = 'abc'; $this->assertEqual('abc',$test1->a); } function test_two() { $test1 = new singleton_y(); $test1->a = 1; $this->assertEqual(1,$test1->a); $test2 = new singleton_y(); $this->assertEqual(1,$test2->a); $this->assertEqual('test',$test1->test()); } }
Revision: 450
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 14, 2006 04:28 by ekobudisetiyo
Initial Code
//PHP5 only class singleton { var $class_name; function __construct() { if(!isset($GLOBALS['fuselogic_singlenton_vars'])) { $GLOBALS['fuselogic_singlenton_vars'] = new open(); } $this->class_name = get_class($this); if(!isset($GLOBALS['fuselogic_singlenton_vars']->{$this->class_name})) { $GLOBALS['fuselogic_singlenton_vars']->{$this->class_name} = new open(); } } function __set($name,$value) { $GLOBALS['fuselogic_singlenton_vars']->{$this->class_name}->{$name} = $value; } function __get($name) { return $GLOBALS['fuselogic_singlenton_vars']->{$this->class_name}->{$name}; } }
Initial URL
http://fuselogic.haltebis.com
Initial Description
Actually Singleton Class in PHP5 is very easy. Usage:
Initial Title
PHP5 Singleton Class
Initial Tags
Initial Language
PHP