一尘不染

PHP5对象是否通过引用传递?

php

我似乎无法获得任何一致的信息。不同的消息来源似乎说了不同的话,而古老的php.net本身( 似乎 )并未明确指出这一点-
尽管我必须承认,我只是快速浏览了一下。

如果我要传递“重”对象,则需要通过引用传递,但我不想继续输入:

function foo(TypeName& $obj)

如果我能摆脱

function foo(TypeName $obj)

那么标准怎么说呢?


阅读 219

收藏
2020-05-29

共1个答案

一尘不染

对象通过引用传递(和分配)。无需使用操作员地址。

当然,我键入的内容过于简单,但将适合您的目的。该文档指出:

经常提到的PHP5 OOP的关键点之一是“默认情况下,对象是通过引用传递的”。这不是完全正确的。本节使用一些示例来纠正一般性想法。

PHP引用是一个别名,它允许两个不同的变量写入相同的值。从PHP5开始,对象变量不再包含对象本身作为值。它仅包含一个对象标识符,该标识符使对象访问者可以找到实际的对象。当对象通过参数发送,返回或分配给另一个变量时,不同的变量不是别名:它们持有标识符的副本,该副本指向同一对象。

2020-05-29