В чем разница между $a = &$b
, $a = $b
и $b = clone $a
в PHP OOP? $a
- это экземпляр класса.
3
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.
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.
Смежные вопросы
- 1. Разница между a = b и b = a?
- 2. В чем разница между ['[a, a, a]', '[b, b, b]'] и [[a, a, a], [b, b, b]] в python?
- 3. Разница между || a = b и a = a || b в рубине?
- 4. Разница между a - = b и a = a - b в Python
- 5. В чем разница между a = a + b и a + = b?
- 6. Разница между a + = b и a = a + b в Java
- 7. Какая разница между a == b и (a & b) == b
- 8. Perl speed: разница между $ a = $ a. $ B и $ a. = $ B
- 9. Различия между * a = b и a = & b?
- 10. разница между $ [a-b] и $ ((a-b)) в bash
- 11. В чем разница между * (a + b) и (* a + b)
- 12. В чем разница между «numpy.add (a, b)» и «a + b»?
- 13. Разница между a + b и a .__ add __ (b)
- 14. SqlAlchemy как запросить столбец A == a и B == b и A == b и B == a
- 15. Разница между sort(), sort (function (a, b) {return a-b;}); и sort (function (a, b) {...})
- 16. Почему (a | b) эквивалентно a - (a & b) + b?
- 17. Swift: преобразование массива [A, B, B, B, A, B, B, B] в массив хэш [[A: [B, B, B], [A: [B, B, B ]]]
- 18. проверяет, находится ли нецелое число в диапазоне [a, b) - или [a, b], (a, b), (a, b]
- 19. a = (a + b) - (b = a); C++ vs php
- 20. Для {A = a; B = B; }, будет ли «A = a» строго выполняться до «B = b»?
- 21. Конкатенация строк PHP - «$ a $ b» против $ a. "". $ b - производительность
- 22. упрощение булевого выражения (a * 'b *' c) + ('a *' b * c) + ('a * b *' c) + (a * 'b * c)
- 23. Изменить набор из {a-b, b-c, c-a} на {(a, b), (b, c), (c, a)}?
- 24. PHP transform array 'a', 'b', 'c' to 'a/b/c', 'a/b', 'a'
- 25. Regex a: b c d a: b
- 26. Есть ли связь между `a: ~: b` и` (a: == b): ~: True`?
- 27. Как работает Python a, b = b, a?
- 28. Почему Numpy рассматривает a + = b и a = a + b иначе
- 29. Python «a = a-b» и «a- = b» действительно эквивалентны?
- 30. Как я могу получить (function '(a b a a b c)) => ((a a a) (b b))?
+1 быстрее меня :) –
Я тоже писал почти то же самое! +1, хотя я бы хотел, чтобы вы объяснили PHP-ссылку и клонирование немного больше. Обновление: и, конечно же, вы обновили свой ответ в то же время. Я отправил комментарий: D – Adi
Я не понимаю, в чем заключается основное различие между $ a = $ b; и $ a = &$b; Если вы посмотрите на первый пример здесь http://php.net/manual/en/language.oop5.references.php, он дает тот же результат –