Question

What is the difference between $a = &$b, $a = $b and $b = clone $a in PHP OOP? $a is an instance of a class.

Was it helpful?

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
scroll top