2012-12-12 20 views
0

如果我這樣做是在PHP 5.x的(一般僞代碼):在PHP中重複新對象?

class object{ 
    __construct($id){ 
     <<perform database query>> 
    } 
} 

$array(1) = new object(1); 
$array(1) = new object(1); 

我是不是浪費的努力(內存,CPU等)?數據庫查詢會運行兩次嗎?

什麼是最好避免這種方式(如果它是一個問題)?使用$array(1) instanceof objectisset($array(1))array_key_exists(1, $array)

是否有一個(好?)的方式在課堂上進行檢查,看它是否已經存在,它再次做了所有工作過嗎?


編輯:爲了清楚起見,我不需要這個對象兩次。而這個目標將被再次使用$array(523) = new object(523);我的主要問題是如何最好地避免冗餘創建完全相同的對象。

+0

重新您的最後一句話,讀了Singleton模式 – Prisoner

+5

不要在__construct做數據庫操作() – vodich

+2

什麼@vodich說。 **不**閱讀單身反模式。維護一個數據庫連接是很好的。然而,應該避免爲此使用「Singleton」。 – rdlowrey

回答

3

如果你想避免創建多個對象,你有幾個選擇。那些想到的是...

  1. 創建對象一次,並確保它傳遞到需要的地方。這意味着您必須檢查代碼中與該對象相關的依賴關係。

  2. 使用對象的工廠來構造對象,它可以返回對象的引用,而不是創建一個新的,如果它已經創建。

  3. 實現Singleton模式。

與其他所有情況一樣,需要權衡取捨,因此請檢查您的情況並確定最適合您的情況。