Dziedziczenie a typy przecięcia
Założenie: Pokażemy, jak wykorzystać typy przecięcia w PHP do deklaracji zmiennej, która musi implementować jednocześnie kilka interfejsów.
Krok po kroku:
- Definicja interfejsów: Zdefiniujmy dwa proste interfejsy:
Drawable
iMovable
. - Klasa implementująca oba interfejsy: Stwórzmy klasę
Shape
, która implementuje oba interfejsy. - Deklaracja zmiennej z typem przecięcia: Zadeklarujmy zmienną, która może przechowywać tylko obiekty implementujące zarówno
Drawable
, jak iMovable
. - Próba przypisania obiektu nie spełniającego warunków: Spróbujmy przypisać obiekt, który nie implementuje obu interfejsów. To spowoduje błąd.
interface Drawable {
public function draw(): string;
}
interface Movable {
public function move(int $x, int $y): void;
}
class Shape implements Drawable, Movable {
public function draw(): string {
return "Rysuję kształt";
}
public function move(int $x, int $y): void {
echo "Przesuwam kształt o ($x, $y)";
}
}
$shape: Drawable & Movable = new Shape();
echo $shape->draw(); // Wyświetli: Rysuję kształt
$shape->move(10, 20); // Wyświetli: Przesuwam kształt o (10, 20)
class BadShape implements Drawable {
public function draw(): string { return "Zły kształt"; }
}
//$shape = new BadShape(); // Błąd! BadShape nie implementuje Movable
Ten przykład pokazuje podstawowe zastosowanie typów przecięcia w PHP. Umożliwiają one precyzyjne określanie typów zmiennych, co prowadzi do bardziej bezpiecznego i czytelnego kodu. Zachęcamy do dalszego zgłębiania tematu typów w PHP!