使用对象传递信息 - php

时间:2014-12-25 22:09:04

标签: php oop

由于PHP对象是通过引用传递的(引用对象本身,不要与引用变量混淆),是否将非常大的对象传递给函数会给系统增加任何资源压力?

这似乎是一张“从监狱免费卡中走出来的'为了传递信息,由于没有制作副本,我可以传递一个巨大的物体,而如果我通过一个数组我会记忆。

在我的OOP编码风格中,我更喜欢将整个对象作为参数传递而不是仅仅传递一个属性,因为它使代码更具可读性,并且如果需要,可以提供更多功能。

所以我的问题:

  1. 我是否认为对象在传递给函数时会推断出没有资源?
  2. 这是否规模?传递1MB对象与传递10MB对象有什么不同?
  3. 访问对象属性与访问数组键相同吗?是否涉及性能问题?
  4. 提前致谢!

1 个答案:

答案 0 :(得分:1)

  1. 是的,通过引用传递意味着没有资源命中。
  2. 是的,通过引用传递10个字节和10兆字节之间没有区别。
  3. 是的,内部对象实际上只是语法上精炼的数组。 PHP在内部有点愚蠢。
  4. 奖金回答:

    1. 数组也通过引用传递,但使用延迟复制机制 - 在修改之前它们实际上不会被复制。因此没有理由更喜欢一个,他们只是满足不同的需求。通常,通过一个100MB阵列来修改它的一小部分绝不是一个好主意,只是其他地方做出错误决定的结果。此外,如果您确实需要这样做,您可以(并且应该)始终明确地通过引用来消除该问题。
    2. 关于这一行:

        

      在我的OOP编码风格中,我更喜欢将整个对象作为参数传递而不是仅仅传递一个属性,因为它使代码更具可读性,并且如果需要,可以提供更多功能。

      我很好奇你的意思。这听起来很像你牺牲OOP原则来掩盖架构错误。根据经验,任何对象的任何界面都应该传递 最少 可能的信息。为方便起见,只需将整个物体或阵列传递到周围即可。听起来非常糟糕的建筑或编码风格。