Одним из ключевых моментов PHP ООП, который часто упоминается, является то, что «объекты по умолчанию передаются по ссылкам». Это не совсем так. Этот раздел исправляет эту общую мысль, используя несколько примеров.

Ссылка PHP — это псевдоним, который позволяет двум разным переменным записывать одно и то же значение. В PHP объектная переменная не содержит сам объект в качестве значения. Он содержит только идентификатор объекта, который позволяет средствам доступа к объекту найти фактический объект. Когда объект отправляется аргументом, возвращается или присваивается другой переменной, разные переменные не являются псевдонимами: они содержат копию идентификатора, указывающего на один и тот же объект.

Пример #1 Ссылки и объекты

<?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";

?>

Приведенный выше пример выведет:

2
2
2