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:

  1. Definicja interfejsów: Zdefiniujmy dwa proste interfejsy: Drawable i Movable.
  2. 
    interface Drawable {
      public function draw(): string;
    }
    
    interface Movable {
      public function move(int $x, int $y): void;
    }
    				
  3. Klasa implementująca oba interfejsy: Stwórzmy klasę Shape, która implementuje oba interfejsy.
  4. 
    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)";
      }
    }
    				
  5. Deklaracja zmiennej z typem przecięcia: Zadeklarujmy zmienną, która może przechowywać tylko obiekty implementujące zarówno Drawable, jak i Movable.
  6. 
    $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)
    				
  7. 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.
  8. 
    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!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *