Dziedziczenie a klonowanie
Założenie: Pokażemy, jak klonowanie obiektu klasy pochodnej różni się od klonowania obiektu klasy bazowej, uwzględniając dziedziczenie.
Krok po kroku:
- Definicja klasy bazowej: Tworzymy klasę bazową
Animal
z metodą__clone()
. - Definicja klasy pochodnej: Tworzymy klasę pochodną
Dog
dziedziczącą poAnimal
, dodając atrybutbreed
. - Tworzenie i klonowanie obiektu: Tworzymy obiekt klasy
Dog
i jego klon. - Wynik: Wyświetlamy informacje o oryginalnym i sklonowanym obiekcie. Zauważ, że metoda
__clone()
z klasyDog
jest wywoływana.
name = $name;
$this->age = $age;
}
public function __clone() {
echo "Klonuję obiekt klasy Animal\n";
}
}
?>
breed = $breed;
}
public function __clone() {
echo "Klonuję obiekt klasy Dog\n";
// Głębokie klonowanie dla atrybutu breed (jeśli potrzebne)
// $this->breed = clone $this->breed;
}
}
?>
name . ", rasa: " . $dog->breed . "\n";
echo "Sklonowany pies: " . $clonedDog->name . ", rasa: " . $clonedDog->breed . "\n";
?>
Ten przykład pokazuje podstawy klonowania obiektów w PHP, uwzględniając dziedziczenie. Pamiętaj, że __clone()
pozwala na kontrolowanie procesu klonowania i zapewnienie głębokiego klonowania złożonych atrybutów, unikając odwołań do tych samych obiektów w oryginale i klonie.