2014-02-08 177 views
0

我的代碼如下。它看起來不錯嗎?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(); 


?> 
+4

這個問題似乎是脫離主題,因爲它是一個代碼審查請求。這更適合http://codereview.stackexchange.com –

回答

1

不,這不是單件實現。 爲什麼? 您可以儘可能多地實例化它。

如何去呢?

1 - 避免直接instantitation

private function __construct(){} 

2 - 提供一個實例化機制

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

現在你可以讓你的對象是這樣的:

$obj = goMongoDB::getInstance(); 

被警告雖然那單身可以使調試成爲真正的痛苦,所以要謹慎使用。

希望這會有幫助