PHP单例 - 这是对的吗?

时间:2014-02-08 13:52:14

标签: php

我的代码如下。看起来不错吗?

<?php

class goMongoDB
{
private static $Instance;

public function goMongoDB() {

    if ( !isset(self::$Instance) )
    {
        self::$Instance = new MongoClient();
    }
}

public function isConnected()
{
    return self::$Instance->connected;
}
}

$MongoClient = new goMongoDB();



print $MongoClient->isConnected();


?>

1 个答案:

答案 0 :(得分:1)

不,这不是单例实现。 为什么? 您可以根据需要实例化它。

如何去做?

1 - 防止直接即时

private function __construct(){}

2 - 提供实例化机制

static function getInstance(){
   if ( !isset(self::$Instance) ){
       self::$Instance = new MongoClient();
    }
   return self::$Instance;
}

现在你可以得到这样的对象:

$obj = goMongoDB::getInstance();

请注意,单身人士可以使调试成为一种真正的痛苦,所以要小心使用。

希望这有帮助