$objectB = $objectA;
Run Code Online (Sandbox Code Playgroud)
从手册:
经常被提及的 PHP 5 OOP 的关键点之一是“默认情况下通过引用传递对象”。这并不完全正确。本节使用一些示例纠正了这种一般性想法。
PHP 引用是一个别名,它允许两个不同的变量写入相同的值。从 PHP 5 开始,对象变量不再包含对象本身作为值。它只包含一个对象标识符,它允许对象访问者找到实际的对象。当一个对象通过参数发送、返回或分配给另一个变量时,不同的变量不是别名:它们持有指向同一个对象的标识符的副本。
<?php
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // $a and $b are copies of the same identifier
// ($a) = ($b) = <id>
$b->foo = 2;
echo $a->foo."\n";
$c = new A;
$d = &$c; // $c and $d are references
// ($c,$d) = <id>
$d->foo = 2;
echo $c->foo."\n";
$e = new A;
function foo($obj) {
// ($obj) = ($e) = <id>
$obj->foo = 2;
}
foo($e);
echo $e->foo."\n";
?>
Run Code Online (Sandbox Code Playgroud)
上面的例子将输出:
2
2
2
Run Code Online (Sandbox Code Playgroud)