Interfejsy a typy wyliczeniowe

Założenie: Pokażemy, jak wykorzystać typy wyliczeniowe w definicjach interfejsów w PHP, aby ograniczyć możliwe wartości stałych interfejsu do predefiniowanego zbioru.

Krok po kroku:

  1. Definicja typu wyliczeniowego: Zdefiniujmy typ wyliczeniowy reprezentujący status zamówienia.
  2. 
    enum OrderStatus {
        case Pending;
        case Processing;
        case Shipped;
        case Delivered;
        case Cancelled;
    }
    				

    Ten kod definiuje typ wyliczeniowy OrderStatus z pięcioma możliwymi wartościami.

  3. Definicja interfejsu z typem wyliczeniowym: Stwórzmy interfejs Order, który wykorzystuje zdefiniowany wcześniej typ wyliczeniowy.
  4. 
    interface Order {
        public function getStatus(): OrderStatus;
        public function setStatus(OrderStatus $status): void;
    }
    				

    Interfejs Order deklaruje metody getStatus() i setStatus(), które pracują z typem OrderStatus. Gwarantuje to, że status zamówienia będzie zawsze jedną z pięciu predefiniowanych wartości.

  5. Implementacja interfejsu: Zaimplementujmy interfejs Order w klasie ConcreteOrder.
  6. 
    class ConcreteOrder implements Order {
        private OrderStatus $status;
    
        public function __construct(OrderStatus $status) {
            $this->status = $status;
        }
    
        public function getStatus(): OrderStatus {
            return $this->status;
        }
    
        public function setStatus(OrderStatus $status): void {
            $this->status = $status;
        }
    }
    				

    Klasa ConcreteOrder implementuje metody zdefiniowane w interfejsie Order, zapewniając poprawne zarządzanie statusem zamówienia.

  7. Użycie klasy: Utwórzmy obiekt klasy ConcreteOrder i sprawdźmy jego działanie.
  8. 
    $order = new ConcreteOrder(OrderStatus::Pending);
    echo "Status zamówienia: " . $order->getStatus()->name . PHP_EOL; // Wyświetli: Status zamówienia: Pending
    
    $order->setStatus(OrderStatus::Shipped);
    echo "Status zamówienia: " . $order->getStatus()->name . PHP_EOL; // Wyświetli: Status zamówienia: Shipped
    				

    Ten kod demonstruje, jak korzystać z klasy ConcreteOrder i zmieniać status zamówienia.

Ten przykład pokazuje podstawowe wykorzystanie typów wyliczeniowych w interfejsach w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi zastosowaniami!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *