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:
- Definicja interfejsu generycznego: Zdefiniujmy interfejs
DataContainer, który będzie przechowywał dane dowolnego typu. Użyjemy do tego notacji generycznej z nawiasami ostrymi<T>. - Implementacja interfejsu: Stwórzmy klasę
StringContainerimplementującą interfejsDataContainerdla typu string. - Użycie interfejsu: Utwórzmy instancję
StringContaineri użyjmy jej metod. - Implementacja dla innego typu: Możemy stworzyć inną klasę, np.
IntegerContainer, która będzie obsługiwać liczby całkowite.
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.
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.
$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.
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!