静态方法和PHP中的Singleton

时间:2011-09-22 09:52:25

标签: php oop design-patterns exception singleton

我有下一堂课:

class MyClass {
    private $_instance = null;
    private function __clone() {}
    private function __construct() {}
    public static function instance()
    {
        if (is_null(self::$_instance)) {
            self::$_instance = new self;
        }
        return self::$_instance;
    }

    public static function methodOne() {}
    public static function methodTwo() {}
    public static function methodThree() {}
    public static function methodFour() {}
}

我有很多方法method...()。但是,只有instance不为null时,此方法才可执行。如果instance为空,我怎么能抛出异常?

我只需要使用static方法。我不能使用非静态。我想使用下一个设计:

MyClass::instance();
MyClass::methodOne(); // If no instance throws an Exception.

1 个答案:

答案 0 :(得分:3)

不要将方法设为静态,只保持instance()静态。

它将导致:

$m = MyClass::instance();
$m->methodOne();