2010-09-26 45 views
0

所以..我不知道這有什麼作用

$Price->setProduct($Product); 
$Product->setPrice($Price); 

echo $Product->getPrice()->getTotal(); 

它顯示遞推如果我print_r($Product)

+1

'Price-> setProduct()'和'Product-> setPrice()'? – NullUserException 2010-09-26 00:21:35

回答

5

你設置兩個對象互相引用。因此,當您嘗試print_r其中之一時,最終會發生遞歸,因爲這些對象不斷地引用對方。

例如,這是你的產品對象將是什麼樣子:

Product 
| Price 
    | Product 
     | Price 
     | Product 
      | Price 

...等等,因爲每個產品都可以訪問到的價格參考,這又會進入到產品的參考和它只是繼續前進。

通過在Product對象中設置Price的引用可以更好地設計應用程序。如果您按照您的示例進行邏輯思考,則價格不需要知道有關產品的信息。舉例來說,一本書的價格很可能需要能夠具有允許設定價格,價格被訪問和/或獲得稅收的方法。 Price對象中的任何方法都不需要訪問Product中的任何內容。但是,一旦擁有產品對象,您很可能需要了解有關產品的信息,例如價格。