Interfejsy i dependency injection
Kurs PHP · Wyjaśnienie, przykłady, oczekiwany wynik i ćwiczenie.
Interfejs definiuje wymagane metody bez narzucania ich implementacji.
Poznać zagadnienie „Interfejsy i dependency injection”, zrozumieć przykład i umieć zastosować podobny zapis we własnym programie.
Wyjaśnienie krok po kroku
Wstrzykiwanie zależności przez konstruktor pozwala podmienić klasę bez edycji jej użytkownika.
Najpierw przeanalizuj kod bez uruchamiania. Zwróć uwagę, jakie dane wykorzystuje program, co z nimi robi i skąd bierze się wynik pokazany pod przykładem.
Praktyczny przykład
Gdzie zobaczysz efekt: Odpowiedź serwera PHP lub konsola
<?php
interface Sender { public function send(): string; }
class EmailSender implements Sender { public function send(): string { return "wysłano"; } }
class Service { public function __construct(private Sender $sender) {} public function run(): string { return $this->sender->send(); } }
echo (new Service(new EmailSender()))->run();
Przeczytaj kod linijka po linijce
interface Sender { public function send(): string; }Definiujemy nowy typ obiektu lub umowę dotyczącą jego zachowania.class EmailSender implements Sender { public function send(): string { return "wysłano"; } }Zwracamy wyliczoną wartość do miejsca wywołania funkcji.class Service { public function __construct(private Sender $sender) {} public function run(): string { return $this->sender->send(); } }Zwracamy wyliczoną wartość do miejsca wywołania funkcji.
wysłano
Jak utrwalić tę umiejętność?
Przepisz kod samodzielnie. Następnie zmień jedną wartość lub jedną instrukcję i spróbuj przewidzieć efekt. Dopiero potem uruchom zmienioną wersję. Jeśli wynik jest inny niż oczekiwany, porównaj kolejne linie.
Spróbuj samodzielnie
Stwórz alternatywną implementację Sender.
Jeśli rozumiesz przykład, oznacz lekcję jako ukończoną i przejdź dalej.