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ę
StringContainer
implementującą interfejsDataContainer
dla typu string. - Użycie interfejsu: Utwórzmy instancję
StringContainer
i 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!