Klasy abstrakcyjne a typy wyliczeniowe
Założenie: Pokażemy, jak wykorzystać typy wyliczeniowe w definicjach klas abstrakcyjnych w PHP, tworząc klasę bazową definiującą stałe o określonych wartościach z wyliczenia.
Krok po kroku:
- Definicja typu wyliczeniowego: Zdefiniujmy typ wyliczeniowy reprezentujący status zamówienia.
- Deklaracja klasy abstrakcyjnej: Stwórzmy klasę abstrakcyjną
Order
, która będzie korzystać z naszego typu wyliczeniowego. - Implementacja klasy potomnej: Utwórzmy klasę
ConcreteOrder
dziedziczącą po klasie abstrakcyjnejOrder
.
enum OrderStatus {
case Pending;
case Processing;
case Shipped;
case Delivered;
case Cancelled;
}
Ten kod definiuje typ wyliczeniowy OrderStatus
z pięcioma możliwymi stanami.
abstract class Order {
public OrderStatus $status;
public function __construct(OrderStatus $status) {
$this->status = $status;
}
abstract public function getStatus(): OrderStatus;
}
Klasa Order
posiada właściwość $status
typu OrderStatus
i abstrakcyjną metodę getStatus()
, którą muszą zaimplementować klasy potomne.
class ConcreteOrder extends Order {
public function getStatus(): OrderStatus {
return $this->status;
}
}
$order = new ConcreteOrder(OrderStatus::Pending);
echo "Status zamówienia: " . $order->getStatus()->name; // Wyświetli: Status zamówienia: Pending
Klasa ConcreteOrder
implementuje abstrakcyjną metodę getStatus()
i tworzymy obiekt $order
z początkowym statusem Pending
.
Ten przykład pokazuje podstawowe wykorzystanie typów wyliczeniowych w klasach abstrakcyjnych w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi możliwościami!