Skip to content

Files

Latest commit

b8aa050 · Sep 27, 2023

History

History
This branch is up to date with DesignPatternsPHP/DesignPatternsPHP:main.

Observer

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Oct 1, 2021
Aug 19, 2019
Sep 27, 2023
Dec 15, 2021
Oct 1, 2021

Purpose

To implement a publish/subscribe behaviour to an object, whenever a "Subject" object changes its state, the attached "Observers" will be notified. It is used to shorten the amount of coupled objects and uses loose coupling instead.

Examples

  • a message queue system is observed to show the progress of a job in a GUI

Note

PHP already defines two interfaces that can help to implement this pattern: SplObserver and SplSubject.

UML Diagram

Alt Observer UML Diagram

Code

You can also find this code on GitHub

User.php

.. literalinclude:: User.php
   :language: php
   :linenos:

UserObserver.php

.. literalinclude:: UserObserver.php
   :language: php
   :linenos:

Test

Tests/ObserverTest.php

.. literalinclude:: Tests/ObserverTest.php
   :language: php
   :linenos: