Добро пожаловать на форум PHP программистов!
За последние 24 часа нас посетили 22310 программистов и 1146 роботов. Сейчас ищут 660 программистов ...
Приступая к работе

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

Вернуться к: Классы и объекты

Одним из ключевых моментов объектно-ориентированной парадигмы PHP 5, которой часто обсуждается, является "передача объектов по ссылке по умолчанию". Это не совсем верно. Этот раздел уточняет это понятие используя некоторые примеры.

Ссылка в PHP это псевдоним (алиас), который позволяет присвоить двум переменным одинаковое значение. Начиная с PHP 5 объектная переменная больше не содержит сам объект как значение. Такая переменная содержит только идентификатор объекта, который позволяет найти конкретный объект при обращении к нему. Когда объект передается как аргумент функции, возвращается или присваивается другой переменной, то эти разные переменные не являются псевдонимами (алиасами): они содержат копию идентификатора, который указывает на один и тот же объект.

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

<?php
class {
    public 
$foo 1;
}  

$a = new A;
$b $a;     // $a и $b копии одного идентификатора
             // ($a) = ($b) = <id>
$b->foo 2;
echo 
$a->foo."\n";


$c = new A;
$d = &$c;    // $c и $d ссылки
             // ($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


Вернуться к: Классы и объекты

© 2024 «PHP.RU — Сообщество PHP-Программистов»
Главная | Форум | Реклама на сайте | Контакты VIP Сувениры
Разработка компании ODware