LDu*_*san 6 php oop reference object php-internals
由于现在默认情况下通过引用传递对象,是否有一些特殊情况才有&$obj意义?
Mar*_*sch 11
对象使用不同的引用机制.&$object更多是参考的参考.你无法真正比较它们.请参阅对象和参考:
PHP引用是一个别名,它允许两个不同的变量写入相同的值.从PHP 5开始,对象变量不再包含对象本身作为值.它只包含一个对象标识符,允许对象访问者查找实际对象.当一个对象通过参数发送,返回或分配给另一个变量时,不同的变量不是别名:它们包含标识符的副本,该副本指向同一个对象.
&$object不是别的$object.我给你举个例子:
foreach ($objects as $object) {
if ($cond) {
$object = new Object(); // This won't affect $objects
}
}
foreach ($objects as &$object) {
if ($cond) {
$object = new Object(); // This will affect $objects
}
}
Run Code Online (Sandbox Code Playgroud)
如果有意义,或者有需要,我不会回答这个问题.这些是基于意见的问题.你绝对&可以在没有物体参考的情况下生存,就像没有物体一样.两种机制的存在是PHP向后兼容的结果.