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ą
Animalz metodą__clone(). - Definicja klasy pochodnej: Tworzymy klasę pochodną
Dogdziedziczącą poAnimal, dodając atrybutbreed. - Tworzenie i klonowanie obiektu: Tworzymy obiekt klasy
Dogi jego klon. - Wynik: Wyświetlamy informacje o oryginalnym i sklonowanym obiekcie. Zauważ, że metoda
__clone()z klasyDogjest 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.