现在因为我刚接触使用PHP中的对象,我觉得在我的脑海中,我认为PHP对象是一个庞大而笨重的东西。这让我想减少使用它们,我觉得我正在使用非常简单的代码,并且通过将它放入对象中而使它过于复杂。
如果我有数据库,缓存,会话,核心和用户对象,我需要在彼此内部和其他未提及的类中访问它们,我决定将所有这些存储在注册表对象中。因此,由于我对对象如何工作的知识有限,在我看来,将注册表对象传递给一个简单的对象几乎是非常重要的。就像注册表一样,它里面有5个对象。这是错的吗?注册实际上只是传递了这些对象在内存中的位置吗?或者我真的将一个非常大的物体传递到我的所有物体中?
对不起,如果这根本没有意义,希望它确实如此。我只是想更好地了解它们在性能方面的工作方式。
答案 0 :(得分:5)
在PHP5中,默认情况下所有对象都通过引用传递。简单来说,引用只是“指向”实际对象或变量在内存中的位置(注意术语,因为“指针”在功能上与PHP的“引用”完全不同,但它们在概念上非常相似)。
当您通过引用传递对象时,您只需传递非常小的内存指示器。对象本身不会被移动......它们在内存中保持不变,不会移动或重写或任何东西。这包括当您将对象放在其他对象中时...只需调整引用。
OO设计和编程赋予代码的优势通常远远超过管理对象带来的微小开销。请放心,PHP解释器最好以最佳方式管理对象,并且通过传递对象而不是通过传递对整数或字符串的引用,不会产生任何额外开销。参考开销非常小。
答案 1 :(得分:1)
推荐阅读:PHP References