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

Nat*_*Nat 0 php recursion

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

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

echo $Product->getPrice()->getTotal();
Run Code Online (Sandbox Code Playgroud)

如果我,它显示RECURSIONprint_r($Product)

the*_*oon 5

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

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

Product
|  Price
   |  Product
      |  Price
         |  Product
            |  Price
Run Code Online (Sandbox Code Playgroud)

......等等,因为每个产品都可以访问对Price的引用,而Price又可以访问对Product的引用,它只会继续运行.

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