Передать объекта параметром в метод в PHP5! С сылкой или без? Разница?

Андрейка

Senior pomidor developer
satanistlav
объяснить не смог, но тя поняли) просто объяснять чем отличается переменная от значения переменной не очень хочеццо
 

atv

Новичок
satanistlav
В мануале, на который ты ссылался есть пример:
PHP:
<?php
$assigned   =  $instance;
$reference  =& $instance;

$instance->var = '$assigned will have this value';

$instance = null; // $instance and $reference become null

var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
который показывает разницу меджу передачей по ссылке и присвоением объектов.

Когда происходит передача по ссылке, то две переменные ссылаются на один и тот же участок памяти. В случае обычного присвоения объектов, можно сказать, что передаётся указатель на объект. Подробнее про указатели и ссылки можно узнать из языка С, только там указатели можно применять ко всем переменным, и с использованием специального синтаксиса, а в PHP это делается автоматом и только для объектов.
 

Alexandre

PHPПенсионер
я вообще не понимаю в чем сыр-бор. Объекты в пхп5 передаются по ссылке, в пхп4 - передавались по значению.
 

satanistlav

Новичок
Автор оригинала: atv

Когда происходит передача по ссылке, то две переменные ссылаются на один и тот же участок памяти. В случае обычного присвоения объектов, можно сказать, что передаётся указатель на объект. Подробнее про указатели и ссылки можно узнать из языка С, только там указатели можно применять ко всем переменным, и с использованием специального синтаксиса, а в PHP это делается автоматом и только для объектов.
Спасибо огромное, немного стало яснее :)!

-~{}~ 17.12.07 09:56:

Автор оригинала: Alexandre
я вообще не понимаю в чем сыр-бор. Объекты в пхп5 передаются по ссылке, в пхп4 - передавались по значению.
Я тоже думал что по ссылке, а вот столкнулся с одной проблемкой, и понял, что вовсе и не по ссылке! Посмотри мой последний пример в теме! Всем остальным спасибо за ответы и старания :)
 

cDLEON

Онанист РНРСlub
Ждём тони....
А то я даже не знаю чем эту хрень назвать...Фичей или багом =)
 

HraKK

Мудак
Команда форума
Это не баг.

$foo2 = new foo2(); - выделяется область памяти для хранения ZendObj ($foo2).

new a($foo2); - выделяется область памяти для хранения ZendObj($a) и создается переменная ($foo2) указатель на ZendObj ( $foo2 ).
И в конструкторе убивается указатель.

new b($foo2); - выделяется область памяти для хранения ZendObj($b) и со ссылкой на ZendObj ( $foo2 ).
И в конструкторе убивается ZendObj( $foo2).
 

satanistlav

Новичок
Спасибо за разъяснение!
Эти ответы более интересны и понятны, чем нокоторые первые "умные" посты умных "умниц"!
 

Андрейка

Senior pomidor developer
это разъяснение из серии
-почему солнце восходит на востоке, а заходит на западе?
-вот смотри на восток - видишь - солнце восходит.... (later..) а теперь смотри на запад - солнце садится
-спасибо, о великий учитель, теперь мне все понятно!!
 

satanistlav

Новичок
Автор оригинала: Андрейка
это разъяснение из серии
-почему солнце восходит на востоке, а заходит на западе?
-вот смотри на восток - видишь - солнце восходит.... (later..) а теперь смотри на запад - солнце садится
-спасибо, о великий учитель, теперь мне все понятно!!
Да, может это и из той серии!
Но есть факт, ты не смог ответить на простейший (как мне показалось) для тебя вопрос "почему солнце все же восходит на востоке?"!
А я из Марса, по этому и незнаю
 

Андрейка

Senior pomidor developer
satanistlav
ну ты ж не смог сказать на каком уровне абстракции те объяснять - на коровах или на гироскопах.

Давай, в завершение темы, ты объяснишь - чем же отличаются references от the same instances, резюмируя все более интересное и более понятное из вышепрочитанного.. чтобы было просто и доступно)
 

satanistlav

Новичок
Reference - это ссылка на значение переменной в памяти!
Same instance - это указатель на объект!

Думаю тему пора закрывать, всем спасибо.
 

Long

Новичок
satanistlav, закажи себе диски с последней phpconf, там Дерик подробно объясняет как внутри все работает.
 
Сверху