已经非常彻底地解释了,如果它们是技术原因,您只能在 PHP 中通过引用传递,因为 Copy-On-Write 基本上使性能等效。据我了解,如果它从未更改过,它永远不会复制对象。
但是,如果函数确实更改了变量,但您的代码不再使用它/不使用任何已更改的部分怎么办?是否更改原始代码对代码无关紧要。是的,PHP 优化器可能会考虑这种情况,但我没有理由相信它会这样做。
传递单个引用肯定会比复制一个巨大的数组或对象快得多。
那么这是通过引用传递的好情况吗?
例如,假设您传入一个 DomCrawler (只不过是一个大的 [html 格式化] 字符串,除了在这种特定情况下它是通过引用隐式传递的)。爬行一点并提取一些信息。在许多情况下,您不需要将 Crawler 重置为其原始位置,因为您根本不会再次使用它。另外,想象一下我们确实使用了 DOMCrawler,我们从中读取 URI。该函数没有改变这一点,所以通过引用或值传递仍然是等价的,但是通过引用传递不会明显更优化吗?我认为这种情况对于任何优化者来说都很难发现。