abstract class LoginObserver implements SplObserver { /** * @var Login */ private $subject; public function __construct(Login $login) { $this->subject = $login; } public function update (SplSubject $subject) { if ($this->subject === $subject) { $this->doUpdate($subject); } } abstract public function doUpdate(Login $subject); }
W konstruktorze przekazuję obiekt klasy Login, potem w funkcji update sprawdzam czy parametr update jest on na pewno instancją klasy login, jeśli tak to w klasach potomnych metodę doUpdate piszę tak jak trzeba, bo już wiem że na 100% na obiekcie klasy Login operuję. Działa, lecz IDE dowala się do
bo definiując metodę doUpdate oczekuję typu Login, a daję typ SplSubject (bo jestem pewien, że jest on również typem Login). Nie da się tego jakoś podreperować, może jakiś PHPDoc, żeby IDE wiedziało co chcę zrobić?
$this->doUpdate($subject);