Kopírování objektů v PHP a funkce __clone
Zatímco v PHP4 se přiřazením objektu do proměnné objekt kopíroval, od verze PHP5 je odkazován. Naskytnou se však situace, kdy je potřeba objekt kopírovat neboli klonovat. K tomu slouží funkce __clone().
Funkce clone se nám hodí v případě, že potřebujeme identickou kopii objektu. Protože v PHP5 se objekty přiřazením odkazují a ne kopírují, jak je to vysvětleno v článku Reference a odkazování na objekty v PHP5, musíme identickou kopii vytvářet pomocí zápisu $b = clone $a;. Pak nám nevadí, ani když je instance $a zrušena. Objekt $b je stále platný a nese všechny vlastnosti objektu $a, následné změny ve vlastnostech objektu $a se již v objektu $b nijak neprojeví.
Samotný proces klonování si můžeme ve třídě upravit definováním funkce __clone().
- class A {
- public $x, $name;
- public function __construct($x) {
- $this->x=$x;
- }
- public function __clone() {
- $this->name="Jsem klon / ".$this->x;
- }
- }
podobné články
| 09.03.2008 | Reference a odkazování na objekty v PHP5 | (17%) |
komentáře
RSS Komentáře


