// prvo da se ispravim/dopunim. izgleda da je od bete4 za kloniranje ubačena nova ključna reč: $newObj = clone $oldObj;
naravno da podržava serializaciju, i naravno da podržava reference u serializovanoj mreži objekata.
u prvim alfama petice je valjda bilo problema sa ciklusima (rekurzivnim referenciranjem), sada i to radi..
našao sam samo jedan problem sa referenciranjem na početni serijalizovani objekat (u beti3, nisam još stigao da se igram za RC).
naime, kada imamo rekurziju posle već prvog nivoa, npr
$x->a = $x; to radi kako se i očekuje. ali kada imamo recimo ovakav kod:
Code:
class Alpha {
var $a;
}
class Beta {
var $b;
}
$x = new Alpha();
$x->a = new Beta();
$x->a->b = $x;
$y = unserialize(serialize($x));
var_dump($x, $y);
za sve koji razumeju problematiku, rezultat nije baš očekivan:
Code:
object(alpha)#1 (1) {
["a"]=>
object(beta)#2 (1) {
["b"]=>
object(alpha)#1 (1) {
["a"]=>
object(beta)#2 (1) {
["b"]=>
*RECURSION*
}
}
}
}
object(alpha)#3 (1) {
["a"]=>
&object(beta)#4 (1) {
["b"]=>
object(alpha)#5 (1) {
["a"]=>
&object(beta)#4 (1) {
["b"]=>
object(alpha)#5 (1) {
["a"]=>
*RECURSION*
}
}
}
}
}
po referencama objekata (ID brojevi posle imena klasa, npr #3), vidi se da
$y->a->b nije (rekurzivna) referenca na
$y, već je
$y->a->b->a referenca na
$y->a..