Difference between $a=&$b , $a = $b and $a= clone $b in PHP OOP
-
16-06-2021 - |
Question
What is the difference between $a = &$b
, $a = $b
and $b = clone $a
in PHP OOP? $a
is an instance of a class.
Solution
// $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;
And check more info with References, Object Cloning.
OTHER TIPS
// $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;
If you didn't know what is ZVAL structure,and what is refcount,is_ref in ZVAL structure about,just take some time for PHP's garbage collection.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow