2012-06-25 9 views
3

В чем разница между $a = &$b, $a = $b и $b = clone $a в PHP OOP? $a - это экземпляр класса.

ответ

8
// $a is a reference of $b, if $a changes, so does $b.  
$a = &$b; 

// assign $b to $a, the most basic assign. 
$a = $b; 

// This is for object clone. Assign a copy of object `$b` to `$a`. 
// Without clone, $a and $b has same object id, which means they are pointing to same object. 
$a = clone $b; 

и проверить больше информации с References, Object Cloning.

+1

+1 быстрее меня :) –

+0

Я тоже писал почти то же самое! +1, хотя я бы хотел, чтобы вы объяснили PHP-ссылку и клонирование немного больше. Обновление: и, конечно же, вы обновили свой ответ в то же время. Я отправил комментарий: D – Adi

+0

Я не понимаю, в чем заключается основное различие между $ a = $ b; и $ a = &$b; Если вы посмотрите на первый пример здесь http://php.net/manual/en/language.oop5.references.php, он дает тот же результат –

0
// $a has same object id as $b. if u set $b = NULL, $a would be still an object 
$a = $b; 

// $a is a link to $b. if u set $b = NULL, $a would also become NULL 
$a = &$b; 

// clone $b and store to $a. also __clone method of $b will be executed 
$a = clone $b; 
-1

Если вы не знаете, что такое ZVAL структура, а что RefCount, is_ref в ZVAL структуре около, просто занять некоторое время для PHP's garbage collection.

Смежные вопросы