所以..我想知道这有什么影响
$Price->setProduct($Product);
$Product->setPrice($Price);
echo $Product->getPrice()->getTotal();
Run Code Online (Sandbox Code Playgroud)
如果我,它显示RECURSIONprint_r($Product)
您已经设置了两个彼此引用的对象.因此,当您尝试print_r其中之一时,最终会导致递归,因为对象会不断地相互引用.
这就是您的Product对象的样子:
Product
| Price
| Product
| Price
| Product
| Price
Run Code Online (Sandbox Code Playgroud)
......等等,因为每个产品都可以访问对Price的引用,而Price又可以访问对Product的引用,它只会继续运行.
通过在Product对象中设置对Price的引用,可以更好地设计应用程序.如果您在逻辑上考虑您的示例,价格不需要知道有关产品的信息.举例来说,书的价格很可能需要能够设置允许设定价格,获取价格和/或获得税的方法.Price对象中的所有方法都不需要从Product访问任何内容.但是,一旦您拥有了Product对象,您很可能需要了解有关产品的信息,例如Price.