public function testSetInstance() { $instance = SingletonChild::getInstance(); $newInstance = new SingletonChild(); SingletonChild::setInstance($newInstance); $this->assertEquals($newInstance, SingletonChild::getInstance()); }
<?php use PhpDaddy\Contract\Singleton\AbstractSingleton; class SingletonChild extends AbstractSingleton { protected function __construct() { } } $obj = SingletonChild::getInstance(); $anotherObj = SingletonChild::getInstance();
} class SingletonChild extends Singleton { public function test() { return 'Test'; } } $obj = Singleton::getInstance(); echo get_class($obj) . '<br />'; $anotherObj = SingletonChild::getInstance(); echo get_class($anotherObj) . '<br />'; echo $anotherObj->test() . '<br />'; var_dump($anotherObj === Singleton::getInstance()); // bool(false) var_dump($anotherObj === SingletonChild::getInstance()); // bool(true) // ----------- /** * Class Singletons * Register singletons in class */ class Singletons { private static $singleton = array(); public static function getSingleton($class) { if (!isset(self::$singleton[$class])) { self::$singleton[$class] = new $class(); } return self::$singleton[$class];
<?php require 'Singleton.php'; require 'SingletonChild.php'; $obj = Singleton::getInstance(); $child = SingletonChild::getInstance(); var_dump($obj === Singleton::getInstance()); var_dump($obj === SingletonChild::getInstance()); var_dump($child === SingletonChild::getInstance());