Dziedziczenie a zasady SOLID
Założenie: Pokażemy, jak prawidłowo stosować dziedziczenie w PHP, uwzględniając zasadę podstawienia Liskov (LSP) z SOLID.
Krok po kroku:
- Stworzenie klasy bazowej: Zdefiniujmy klasę `Ksztalt` reprezentującą ogólny kształt geometryczny.
- Stworzenie klasy pochodnej: Utwórzmy klasę `Kwadrat` dziedziczącą po klasie `Ksztalt`.
- Stworzenie klasy pochodnej (niepoprawny przykład): Utwórzmy klasę `Prostokat` dziedziczącą po klasie `Ksztalt` – przykład naruszający LSP.
- Demonstracja problemu: Próba użycia `Prostokat` jako `Ksztalt` może prowadzić do błędów, jeśli oczekujemy zachowania spójnego z klasą bazową.
- Poprawne rozwiązanie (interfejsy): Zamiast dziedziczenia, lepiej użyć interfejsu, aby zapewnić spójność.
bok = $bok;
}
public function pole() {
return $this->bok * $this->bok;
}
}
?>
szerokosc = $szerokosc;
$this->wysokosc = $wysokosc;
}
public function pole() {
return $this->szerokosc * $this->wysokosc;
}
}
?>
pole() . "\n"; // Poprawne
echo "Pole prostokąta: " . $prostokat->pole() . "\n"; // Poprawne, ale nie zawsze zachowuje się jak Ksztalt
// Problem pojawia się, gdy traktujemy prostokąt jak kwadrat:
// $kwadrat = new Prostokat(5,5); // To nie jest poprawne, narusza LSP
?>
Ten przykład pokazuje podstawy dziedziczenia w PHP i jak ważne jest przestrzeganie zasad SOLID, aby uniknąć problemów w kodzie. Zachęcamy do dalszego zgłębiania tematu i poznawania innych wzorców projektowych.