PHP单例模式之抽象类

2016-09-20  本文已影响103人  Rohn
abstract class SingletonBase
{

    public $table = 'bar';
    private static $_instance;

    private function __construct()
    {
        echo 'this is the private parent construct';
    }

    public static function getInstance($className)
    {
        if (!self::$_instance instanceof self) {
            self::$_instance = new $className();
        }
        self::$_instance->testFunction();
        return self::$_instance;
    }

    abstract function testFunction();

    private function __clone()
    {
        trigger_error('Clone is not allow!', E_USER_ERROR);
    }
}

class SingletonFoo extends SingletonBase
{

    public $table = 'foo';

    public static function getInstance()
    {
        return parent::getInstance(__CLASS__);
    }

    public function testFunction()
    {
        echo 'test function</p>';
    }
}

$st = SingletonFoo::getInstance();
上一篇 下一篇

猜你喜欢

热点阅读