PHP - obiektowe PHP - klonowanie obiektów

DZIAŁANIE: Moj samochodzik
Samochod sklonowany
 

Kod:

Ewentualne Objaśnienia:

Kolejna nowość w 5 PHP to słowo kluczowe clone - pozwala na dokładne skopiowanie istniejącego obiektu. Tworzona jest kopia tej samej klasy i z tymi samymi wartościami atrybutów.

Jednak pewne zachowane klonowania można zmienić - jeżeli chcemy aby klonowanie działało inaczej niż domyślnie należy w klasie bazowej stworzyć specjalną funkcję __clone - to kolejna funkcja przypominając konstruktor i destruktor. Jest ona wywoływana w momencie wywołania słowa kluczowe clone. Wewnątrz tej metody możemy sobie zdefiniować odpowiadającą nam operacje klonowania obiektu.

Tak też uczyniłem w naszym prostym przykładzie mamy klasą samochod gdzie w naszej funkcji __clone ustalamy, że po skopiowaniu parametr $nazwa w sklonowanym obiekcie ma przyjąć wartość "Samochod sklonowany". No i tak tworzymy obiekt typu samochod, nadajemy mu parametr nazwa na "Moj samochodzik" a następnie klonujemy go. Odwołania do stałej $nazwa pokazują, że rzeczywiście mimo nadania w obiekcie $a wartości parametru nazwa w sklonowanym obiekcie została nadana wartość określone przez funkcję __clone .

Warto wiedzieć, że jeżeli dokonywalibyśmy klonowania w przykładowy sposób : $b = $a - czyli bez słowa clone to odbywa się ono inaczej. W poprzednim przykładzie oba obiekty są zupełnie innymi "bytami" (po prostu dwa różne obiekty). Jeśli zrobilibyśmy tak jak wspomniałem to klonowanie będzie tylko powierzchowne - obiekt $b będzie się tylko odnosił do $a (nie kojarzy Ci się to z językiem Java....?) więc zmiana w jakimkolwiek z nich będzie powodować zmianę i w drugim.