当前位置: 首页 > 面试题库 >

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

利海阳
2023-03-14
问题内容

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

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

function foo(TypeName& $obj)

如果我能摆脱

function foo(TypeName $obj)

那么标准怎么说呢?


问题答案:

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

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

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

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



 类似资料:
  • 可能的重复: Java是参照传递吗? 对象是否通过引用传递?换句话说,如果我将对象传递给类,当我更改它时,它是否会自动更新?

  • 问题内容: Javascript是通过引用传递还是通过值传递?这是 Javascript中的 一个示例 :The Good Parts 。我对矩形函数的参数非常困惑。它实际上是,并在函数内部重新定义。没有原始参考。如果我从功能参数中删除它,则内部区域功能将无法访问它。 是关闭吗?但是没有函数返回。 问题答案: 基元按值传递,对象按“引用副本”传递。 具体来说,当您传递对象(或数组)时,您(无形中)

  • 问题内容: 是否可以通过Java通过引用传递对象 就像在C#中一样 问题答案: 不,这在Java中是不可能的。 在Java中,方法的所有参数均按值传递。注意非原始型的的变量,它们是对对象的引用,也由值来传递:在这种情况下, 参考 是 由值来传递 。请注意,按值传递引用与按引用传递不同。

  • 问题内容: 前往游览的频道示例如下:https : //tour.golang.org/concurrency/2 通道c在求和函数中被修改,并且该函数终止后更改仍然存在。显然,c是通过引用传递的,但是没有创建指向c的指针。是否在go中通过引用隐式传递了通道? 问题答案: 从技术上讲,它们是被复制的,因为当您使用时 ,您是在堆上分配内容,因此从技术上讲,它是幕后的指针。但是指针类型没有公开,因此可

  • 当前试图通过引用将对象传递给另一个线程,但在尝试构建解决方案时出错。 以下是错误: c: \程序文件(x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.11.25503\include\thr\xthread(240):错误C2672:“std::invoke”:未找到匹配的重载函数1

  • 问题内容: 在PHP 5中,是否需要使用修饰符通过引用传递?例如, 在PHP4中,您需要使用修饰符在进行更改后保持引用,但是我对已阅读的有关PHP5自动使用传递引用的主题感到困惑,除非明确克隆对象。 在PHP5中,是否 需要通过修饰符来通过引用传递所有类型的对象(变量,类,数组等)? 问题答案: 您是否需要使用&修饰符来传递引用? 从技术上/意义上讲,即使有对象,答案也是 肯定的 。这是因为有两种