Объекты и ссылки

Объекты в PHP передаются и присваиваются по ссылке

    Объекты и ссылки

    Ссылка в php - это псевдоним (алиас), который позволяет присвоить двум переменным одинаковое значение
    В php объектная переменная больше не содержит сам объект как значение, такая переменная содержит только идентификатор объекта, который позволяет найти конкретный объект при обращении к нему.
    Объект передаваемый как аргумент функции или возвращается или присваивается другой переменной, то эти разные переменные не являются псевдонимами, они содержат копию идентификатора, который указывает на один и тот же объект

    class A { public $foo = 1; } $a = new A; var_dump($a); echo "<br>"; $b = $a; #Содержат один и тот же идентификатор одного объекта. // ($a) = ($b) = var_dump($b); echo "<br>"; echo $b->foo . "<br>"; #1 $b->foo = 2; echo $a->foo . "<br>"; #2 $c = new A; var_dump($c); echo "<br>"; $d = &$c; #с и d это ссылки на один объект // ($c,$d) = var_dump($d); echo "<br>"; echo $c->foo . "<br>"; #1 echo $d->foo . "<br>"; #1 $d->foo = 2; echo $c->foo . "<br>"; #2 $e = new A; var_dump($e); echo "<br>"; #В следующем примере obj и e содержать одинаковый идентификатор одного объекта function foo($obj) { var_dump($obj); echo "<br>"; $obj->foo = 2; } foo($e); echo $e->foo; object(A)#1 (1) { ["foo"]=> int(1) } object(A)#1 (1) { ["foo"]=> int(1) } 1 2 object(A)#2 (1) { ["foo"]=> int(1) } object(A)#2 (1) { ["foo"]=> int(1) } 1 1 2 object(A)#3 (1) { ["foo"]=> int(1) } object(A)#3 (1) { ["foo"]=> int(1) } 2
    Источники
    Последнее изменение: 20.11.2024 04:55


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ