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().


Zdrojový kód ke stažení clone.php.txtUkázky k nahlédnutí clone.php.

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().

  1. class A {
  2. public $x, $name;
  3. public function __construct($x) {
  4. $this->x=$x;
  5. }
  6. public function __clone() {
  7. $this->name="Jsem klon / ".$this->x;
  8. }
  9. }

podobné články

09.03.2008Reference a odkazování na objekty v PHP5(17%)

komentáře

RSS Komentáře k článku RSS Komentáře   Add to Google
Jméno
Název
Text
Lze používat Texy! syntax. Příklad syntaxe: "text odkazu":odkaz, **tučně**, *kurzíva*, `code`. PHP kód uzavírejte do <?php ... ?> a JavaScript do <script> ... </script>