Klasy abstrakcyjne a typy anonimowe
Założenie: Pokażemy, jak wykorzystać typy anonimowe w definicjach klas abstrakcyjnych w PHP, aby stworzyć elastyczną klasę bazową dostosowaną do różnych typów danych.
Krok po kroku:
- Definicja klasy abstrakcyjnej z typem anonimowym:
abstract class AbstractDataContainer { public function __construct(public readonly mixed $data) {} abstract public function processData(): void; }
Tworzymy klasę abstrakcyjną
AbstractDataContainer
, która przyjmuje dowolny typ danych w konstruktorze. MetodaprocessData
jest abstrakcyjna, co oznacza, że musi być zaimplementowana w klasach potomnych. - Klasa potomna dla danych liczbowych:
class NumberContainer extends AbstractDataContainer { public function processData(): void { echo "Przetwarzam liczbę: " . $this->data . "\n"; } }
Tworzymy klasę
NumberContainer
dziedziczącą poAbstractDataContainer
i implementującą metodęprocessData
dla liczb. - Klasa potomna dla danych tekstowych:
class StringContainer extends AbstractDataContainer { public function processData(): void { echo "Przetwarzam tekst: " . $this->data . "\n"; } }
Tworzymy klasę
StringContainer
dziedziczącą poAbstractDataContainer
i implementującą metodęprocessData
dla tekstu. - Użycie klas:
$numberContainer = new NumberContainer(123); $stringContainer = new StringContainer("Przykładowy tekst"); $numberContainer->processData(); $stringContainer->processData();
Tworzymy obiekty klas potomnych i wywołujemy metodę
processData
.
Ten przykład pokazuje, jak używać typów anonimowych (mixed
) w klasach abstrakcyjnych, aby stworzyć elastyczne i wielokrotnego użytku komponenty. Zachęcamy do dalszego zgłębiania tematu klas abstrakcyjnych i interfejsów w PHP!