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ę
ConcreteOrderdziedziczą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!