PHP对象中的递归$ Price-> setProduct($ Product); $产品展示> setPrice($价格);

时间:2010-09-26 00:19:19

标签: php recursion

所以..我想知道这有什么影响

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

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

如果我print_r($Product)

,它会显示 RECURSION

1 个答案:

答案 0 :(得分:5)

您已经设置了两个彼此引用的对象。因此,当您尝试print_r其中一个时,最终会导致递归,因为这些对象会不断地相互引用。

这就是您的Product对象的样子:

Product
|  Price
   |  Product
      |  Price
         |  Product
            |  Price

...依此类推,因为每个产品都可以访问Price的引用,而Price又可以访问Product的引用,并且它一直在继续。

通过在Product对象中设置对Price的引用,可以更好地设计应用程序。如果您在逻辑上考虑您的示例,价格不需要知道有关产品的信息。举例来说,书的价格很可能需要能够设置允许设定价格,获取价格和/或获得税的方法。 Price对象中的所有方法都不需要从Product访问任何内容。但是,一旦有了Product对象,您很可能需要知道有关产品的信息,如价格。