2010-07-23 59 views
0

在PHP中爲此示例使用一組非常簡單的對象。PHP對象問題

比方說:

對象A:

屬性: DescId;

方法:getListofData();

對象B:

屬性: DescId; DescName;

方法: getDescNameById();

我想知道的是,當ObjectA是從循環內調用函數的時候,從ObjectB獲取DescName的最佳方式是什麼。

我在想我需要實例化ObjectB(如New),然後將ObjectA.DescId傳遞到ObjectB.getDescNameById方法中。

例如:

class objectA { 

     function getListOfData(){ 
      $myObjB= new objectB(); 
       while ... 
       { 
        $myObjB->descId = $row["descId"]; 
        $myDescName = $myObjB->getDescNameById(); 
        ... 
        $i++; 
       } 
     } 
} 

我敢肯定上述工作,但我不知道這是否是正確的方式,或者即使有這樣做的其他方式。這種類型的東西有沒有名字?有人提到了Lazy Loading。這是什麼在PHP?

+0

這些對象應該是什麼?您的示例代碼與您的意圖描述不完全匹配。即樣本中不存在對象A. – 2010-07-23 20:02:15

+0

@George這段代碼從ObjectA中調用 – webdad3 2010-07-23 20:04:40

+0

這是樣本中顯示的非常關鍵的事情。它製造了巨大的差異。 – 2010-07-23 20:05:59

回答

2

請記住,您的問題需要一些擴展。

類是一個配方。一個對象是用該食譜製作的實際菜餚。

所以,如果你需要知道食譜的味道,你需要真正做點什麼。

在設計時,您通常會考慮類。即當你計劃一頓晚餐時,你會根據食譜考慮你想要食用的東西,而不是成品菜。 (在烹飪之前,你沒有這些菜餚。)也就是說,你可能會考慮到一些食譜很難執行,因此是一個冒險的提議。

這是否有意義?

有些問題要問自己關於設計:

你甚至不需要對象A,因爲它們都存儲的ID名稱相同? (大概他們綁在一起。)

這兩者有什麼區別?

這可以組合成一個對象嗎?

這些取決於方法的作用以及id的實際內容。

+0

足夠公平......正如你暗指的那樣,我在表格結構的設計中非常密切地構建了這些對象。我認爲你是在暗示我實際上是在設計一個對象而不是數據的來源。 – webdad3 2010-07-23 20:09:05

+0

@Jeff是的,非常如此:「你是在暗示我實際上是在設計一個對象而不是數據來自哪裏」 – 2010-07-23 20:12:09

1

此外,您應該嘗試在b班的構造函數中分配任何必需的信息。

所以:

$myObjB->descId = $row["descId"]; 
$myDescName = $myObjB->getDescNameById(); 

可能變成:

$myObjB = new Object_B($row["descId"]); 
$myDescName = $myObjB->get_description(); 

這有助於保持B中自成一體成爲可能,這是通常的OO的目標之一。