Jak utworzyć kopię obiektu w PHP?

Wydaje się, że w obiektach PHP są przekazywane przez referencje. Nawet operatorzy przypisania nie wydają się tworzyć kopii obiektu.

Oto prosty, wymyślny dowód:

<?php

class A {
    public $b;
}


function set_b($obj) { $obj->b = "after"; }

$a = new A();
$a->b = "before";
$c = $a; //i would especially expect this to create a copy.

set_b($a);

print $a->b; //i would expect this to show 'before'
print $c->b; //i would ESPECIALLY expect this to show 'before'

?>

W obu przypadkach otrzymuję „po”

Więc jak mam przejść$ a doset_b () według wartości, a nie przez odniesienie?

questionAnswers(9)

yourAnswerToTheQuestion