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. MetodaprocessDatajest 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ę
NumberContainerdziedziczącą poAbstractDataContaineri implementującą metodęprocessDatadla liczb. - Klasa potomna dla danych tekstowych:
class StringContainer extends AbstractDataContainer { public function processData(): void { echo "Przetwarzam tekst: " . $this->data . "\n"; } }Tworzymy klasę
StringContainerdziedziczącą poAbstractDataContaineri implementującą metodęprocessDatadla 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!