Interfejsy a typy generyczne

Założenie: Pokażemy, jak wykorzystać interfejsy w PHP jako typy generyczne, aby stworzyć elastyczny kod działający z różnymi typami danych.

Krok po kroku:

  1. Definicja interfejsu generycznego: Zdefiniujmy interfejs DataContainer, który będzie przechowywał dane dowolnego typu. Użyjemy do tego notacji generycznej z nawiasami ostrymi <T>.
  2. 
    interface DataContainer<T> {
      public function setData(T $data): void;
      public function getData(): T;
    }
    				

    Ten kod definiuje interfejs DataContainer z parametrem typu T. Metody setData i getData oczekują i zwracają dane typu T.

  3. Implementacja interfejsu: Stwórzmy klasę StringContainer implementującą interfejs DataContainer dla typu string.
  4. 
    class StringContainer implements DataContainer<string> {
      private string $data;
    
      public function setData(string $data): void {
        $this->data = $data;
      }
    
      public function getData(): string {
        return $this->data;
      }
    }
    				

    Klasa StringContainer implementuje interfejs DataContainer<string>, co oznacza, że będzie przechowywać tylko dane typu string.

  5. Użycie interfejsu: Utwórzmy instancję StringContainer i użyjmy jej metod.
  6. 
    $container = new StringContainer();
    $container->setData("Hello, world!");
    echo $container->getData(); // Wyświetli: Hello, world!
    				

    Ten kod pokazuje, jak łatwo używać interfejsu DataContainer z różnymi typami danych.

  7. Implementacja dla innego typu: Możemy stworzyć inną klasę, np. IntegerContainer, która będzie obsługiwać liczby całkowite.
  8. 
    class IntegerContainer implements DataContainer<int> {
      private int $data;
    
      public function setData(int $data): void {
        $this->data = $data;
      }
    
      public function getData(): int {
        return $this->data;
      }
    }
    				

Ten przykład pokazuje podstawowe wykorzystanie interfejsów jako typów generycznych w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi typami danych!

Dodaj komentarz 0

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