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();
예제 #3
0
}
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];
예제 #4
0
파일: index.php 프로젝트: Gnastw/CoursYNov
<?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());